home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-06-25 | 136.8 KB | 3,630 lines |
- Hints and Tips
- 1.1
- Using Electrohome Monitors
- 1.1
- Ian Nicholls of Kidderminster says that the “Electrohome” colour
- monitor, as sold by Opus, works OK on the Archimedes. All you have to do
- is make up the appropriate connector. (Or purchase one from CJE Micros
- or somesuch.) The pin connections for the Archimedes are given on the
- inside back cover.
- 1.1
- Using Modes 18 - 20
- 1.1
- Whilst on the subject of monitors, let me clear up the confusion there
- seems to be in the computer press about the high resolution modes and
- the extra video hardware which the 400 series machines are said to have.
- This extra hardware is NOT for driving modes 18 - 20. Even on the 300
- series, there is all the hardware needed to run these modes on a multi-
- sync monitor.
- 1.1
- The extra hardware in the 400 series is actually for even higher
- resolution graphics − it will go up to 1280 by 976 pixels in monochrome
- (160 characters by 122 lines of text) and, as with modes 18 - 20, it
- requires a special monitor. There is no industry standard for such
- monitors, and Acorn are still looking into providing a suitable monitor
- with their own badge on it. This extra high resolution is of course
- aimed at the CAD (computer aided design) market, and it is said that
- AutoCAD is being translated onto the Archimedes.
- 1.1
- Using a Multi-sync Monitor
- 1.1
- If you have a multi-sync monitor and want to get it working on the 300
- series, all you need to do is to switch the computer on whilst holding
- down the <R> key. This resets the CMOS RAM settings (so if, like me, you
- had changed them, you will have to re-configure again!) and it changes
- the configuration of the RGB output to run in multi-sync mode. It then
- allows you to access the extra screen modes that had been previously
- forbidden to those of us who only have standard monitors. If you should
- want to change the machine back again to run a standard monitor, you
- have to do another <R-power-up> which switches it back again (and re-
- sets the CMOS RAM settings AGAIN!). In other words each time you do an
- <R-power-up> it toggles between the two monitor settings.
- 1.1
- Using View
- 1.1
- Gerald Jones of Northampton tells us that only those of you who have
- gone from a Master Compact to an Archimedes will be able to get View
- going − for the time being, at least, because the ROM versions of VIEW
- will not work under the emulator. If you do have a disc version of View,
- Acorn tell us that the way to get it going is to copy 65ARTHUR from the
- MODULES directory on the Archimedes Welcome disc onto another disc and
- VIEW from the Compact Welcome disc and then use *BUILD !BOOT to create
- a boot file which consists of:
- 1.1
- *65ARTHUR
- 1.1
- *GO F800
- 1.1
- *LOAD VIEW 8000
- 1.1
- *GO 8000
- 1.1
- and then remember to type *OPT 4,3 to set it up so that it will execute
- the boot file on <shift-break>. All you have to do then is to chop up
- your VIEW keystrip and stick it together in the Archimedes keyboard
- format remembering that the f0 key functions are now on the <print> key!
- 1.1
- Attaching a 5.25“ drive
- 1.1
- Have you tried to get a 5.25“ disc drive linked up to the Archimedes?
- Presumably, you did the obvious thing and removed the cable from the
- p.c.b. to the 3.5” drive and plugged in the cable from the 5.25“ drive.
- And you too found that it didn’t work! Well, the official answer is that
- it is possible to connect a 5.25” drive but that there are “different
- connections”. Actually, it seems that the only difference is that they
- have put the connector in the opposite way round!
- 1.1
- Unfortunately, you can’t just turn the connector round because of the
- location lug on the side of it. The solution is either to file the notch
- off the side of the connector so that it will go in either way round, or
- buy a new 34-way insulation displacement connector which you can crimp
- onto the end of your disc cable, the opposite way round from the
- existing one, or buy a disc extension cable from a supplier such as CJE
- Micros (£15 + £1 p&p − address in Fact-File at the back of the
- magazine). The advantage of doing it that way is that the extension
- cable is long enough to stick out at the back of the computer through
- the podule connection slot so that you can connect and disconnect the
- extra drive without taking the lid on and off.
- 1.1
- You can, if you want, put a single 5.25“ drive as drive 1 or a pair of
- drives as drives 1 and 2. The extra drives must, of course, have their
- own power supply units and you need to type *CONFIGURE FLOPPIES 2 (or 3)
- so that the ADFS knows how many drives there are. You will also need to
- get inside the 5.25” drives in order to change the link settings to
- configure them as drives 1 (and 2) and you should also, theoretically,
- remove the terminating resistors − usually a set of resistors (dual-in-
- line or single-in-line) near the drive-select setting links. This is
- because there are already terminating resistors in the internal 3.5“
- drive and you should not have two sets. If you have a dual drive where
- they are on top of one another rather than side by side, you may find it
- difficult to get at the second drive in order to change the link
- selection. If so, the easiest solution is to make the top drive 2 and
- just remember that the lower drive is drive 1.
- 1.1
- One problem you may still find (which Acorn haven’t yet managed to
- explain) is that if you switch on the power to the disc drive before or
- at the same time as the computer, the computer seems unable to start up
- − you just get a blank screen. All you have to do though is to make sure
- you switch the computer on first and then the disc drive. You will also
- find that the desk-top program does not recognise the third drive − even
- if you have typed *CONFIGURE FLOPPIES 3, it only displays two disc icons
- on the screen. (If anyone works out how to modify the program to
- recognise all three, let me know.)
- 1.1
- ADFS bugs
- 1.1
- There are one or two bugs in the ADFS, though they are apparently
- reasonably obscure. The only one I have found myself is that if you try
- to *BUILD a !BOOT file onto a disc that already has a !BOOT file and you
- have left the disc write-protected, when you press <escape>, the system
- hangs up and you have to press <ctrl-break> or reset to escape. Some of
- the bugs have been corrected on the 0.03 version of the ADFS that you
- will find in the MODULES directory on your Welcome disc. This version
- will have to be *RMLOAD’ed, then to check that you have got the right
- version installed, type *HELP MODULES which gives you the current
- version numbers of all modules. It should say ADFS 0.03 (17 Jun 1987)
- instead of ADFS 0.02 (05 Jun 1987). Incidentally, the file name on the
- Welcome disc is Adfs0-03, not Adfs0_03 as you might tend to expect, so
- if you get a file not found error, check that you have typed it
- correctly.
- 1.1
- Have you discoveredÉ?
- 1.1
- I’d like this to be a regular feature. It consists of the sort of things
- that may be obvious to some people, but perhaps that you’ve noticed from
- reading the User Guide (or the Programmers’ Reference Manual when it
- becomes available). If you find something that you thought, “Well, I
- didn’t realise that!’, let us know. I’ll start it off this month with
- things that were new to me.
- 1.1
- • The pad character “|” which is the shifted back-slash character (the
- key just above the return key) can be used to “pad” out those incredibly
- long VDU codes that end with lots of zeros. For example, to switch off
- the cursor, you can use VDU23,1,0,0,0,0,0,0,0,0,0 which can admittedly
- be shortened to VDU23,1,0;0;0;0; can now be reduced to VDU23,1| which
- has the extra advantage that you don’t have to try to remember exactly
- how many zeros it needs to complete the command.
- 1.1
- • Instead of saying value=value+extra, you can use the new operator
- “+=” and say value+=extra which is a significant saving if, like me, you
- tend to use long variable names; likewise with −=extra. (Well with
- “604412 bytes remaining”, it may not be worth worrying about memory
- space, but it does save on printer ribbons!)
- 1.1
- • DANGER! • BEWARE! • WARNING!!!!!
- 1.1
- Newcomers to ADFS beware! If you have been using *WIPE * and looking
- through and saying “yes” or “no” to each, Don’t try it on ADFS! You will
- find that *WIPE * deletes ALL the un-locked files in the current
- directory. It’s like *DESTROY * but without even displaying a list of
- all the files it was about to delete and asking for confirmation. I
- discovered this ‘nasty’ the hard way − I lost about 10 programs at a
- stroke.It wasn’t too bad though as I had copied them across from DFS and
- only modified one or two.
- 1.1
- What you should say is *WIPE * C where the C stands for “Confirm” − then
- it asks you about each file in turn. − You have been warned!!!!
-
- Hints and Tips
- RGB Connector
- Hugh Nolan, of Old Roan, Liverpool, writes, “The pinout for the RGB
- connector on page 18 of Archive 1.1 indicates that it follows that of an
- IBM PGA rather than the more common EGA standard. If anybody has a
- monitor supplied with a lead for use with an EGA and wishes to build a
- new cable they should note that the EGA pinouts are as follows:
- 1.2
- 1.2
- 1 Ground 6 Secondary Green/Intensity
- 1.2
- 2 Secondary Red
- 1.2
- 3 Red 7 Secondary Blue/Mono
- 1.2
- 4 Green 8 Horizontal Retrace
- 1.2
- 5 Blue 9 Vertical Retrace
- 1.2
- I am currently using such a monitor with my BBC model B and the
- connections are fairly straightforward except that the BBC’s connector
- does not have separate vertical and horizontal syncs, so I have wired
- the composite sync to pin 9 (Vertical Retrace) of the monitor.”
- 1.2
- Using a multi-sync monitor
- 1.2
- A much easier way to change to a multi-sync monitor is to use:
- 1.2
- *CONFIGURE MONITORTYPE 1 and
- 1.2
- *CONFIGURE MONITORTYPE 0 to switch back to the normal monitor.
- 1.2
- Epson screen-dumps
- 1.2
- No doubt you have discovered the modules called HardCopyFX, MX and RX,
- and you too have discovered that they don’t work! Gerrald Fitton has the
- answer for us. His bug-fix has been passed on to Acorn who are also
- circulating it. The recipe is as follows:
- 1.2
- *LOAD Modules.HardCopyFX 10000 (that’s four noughts - beware of using
- three!)
- 1.2
- !&104E0=&E59C1020
- 1.2
- !&104E4=&E20100FF
- 1.2
- (now replace the disc for the one onto which you want to put the hard-
- copy module)
- 1.2
- *SAVE HardCopyFX 10000 + 700
- 1.2
- *SETTYPE HardCopyFX &FFA
- 1.2
- *STAMP HardCopyFX
- 1.2
- To use the module, *RMLOAD HardCopyFX (or just *HardCopyFX will do) and
- then call it with *HardCopyFX plus various parameters − *HELP HardCopyFX
- will show you what all the parameters are. Has anyone been experiment
- ing with it? What do all the parameters mean and what are their ranges?
- (Landscape, XScale, YScale, Margin and Threshold)
- 1.2
- Avoiding constant use of *MOUNT
- 1.2
- If you, like me, have a number of different discs and you can’t remember
- what is on which, you will probably be fed up of having to type *MOUNT
- each time you change the disc before you can get a catalogue. Try
- *CONFIGURE NODIR and <ctrl-break> and you will find that as long as you
- haven’t gone down to lower directories, you can just change the disc and
- do a *CAT (or *. works as on the BBC micro) and it will re-catalogue the
- disc in the drive. For more details, see James Lynn’s article about
- *CONFIGURE.
- 1.2
- File copying problems
- 1.2
- There are one or two problems with the *COPY command under the 0.2 and
- 0.3 operating systems but, not being used to using ADFS myself, I am
- never sure when it is a bug and when it is me being stupid. One thing
- you will find though is that when doing a *COPY from disc to disc using
- a single drive, it seems to hang up when it should be saying “Enter
- source disc and press the space bar” but don’t panic, it’s probably
- still OK and it’s just that the prompt has not been printed. Replace the
- disc you were expecting to put in next and press <space> and I think you
- will find that it carries on OK. If you haven’t discovered how to do
- disc to disc copying on one drive, see the “Have you discovered”
- section.
- 1.2
- File transfer problems
- 1.2
- If you are still having problems getting files across from other
- computers to the Archimedes, we have received one or two programs from
- subscribers. There is not enough space to print them in this issue, but
- if you drop us a line, we could send you a listing.
- 1.2
- Attaching a 5.25“ disc drive
- 1.2
- Acorn have told us that they would not recommend us to do this as the
- disc drive hardware in the computer is only designed to drive 3.5“
- drives with low control line loading and that if you want to attach a
- 5.25” drive, you should have suitable buffer circuitry added. The
- feedback we are getting for subscribers is that most of you are having
- success with this, though one person said that one drive he attached
- would not work whilst another one did and another person actually blew
- up the driver chip in the Archimedes. So, it’s up to you, but in the
- light of these comments from Acorn, it would clearly be a good idea to
- remove the pull-up resistors on the auxilliary drive.
- 1.2
- (For an alternative, check the “Hardware Available” section to see what
- Brainsoft have done to get round the problem.)
- 1.2
- Three floppies on the desktop
- 1.2
- In order to get three floppies on the desktop, i.e. assuming you have
- added a double 5.25“ disc drive, Gerrald Fitton again comes to our
- rescue. “In the BASIC library program called
- $.desktop.accessory.filehandlr you will find that lines 130 and 140
- accept the first and second floppies, so you will need an extra line:
- 1.2
- 145 IF floppies%>2 THEN PROCsys _addtoiconbar_left(“floppy2”,É
- 1.2
- etc as per lines 130 and 140 and you will have to make a further copy of
- lines 290 to 420 (which refer to floppy 0) emulating the changes made to
- generate lines 430 to 560 which refer to floppy 1 by inserting “2” in
- the appropriate places.
- 1.2
- Fortran 77
- 1.2
- Tom Fortescue warns potential purchasers of Fortran77 that (a) it needs
- at least 1Mbyte and is therefore unusable on the A305 (I haven’t been
- able to check this with Acornsoft.) and (b) it does not come with an
- editor, so unless you’ve got View or Wordwise or Inter-Word or somesuch,
- you won’t get very far with it!
- 1.2
- Stereo speakers
- 1.2
- Enoch Mayer says that he has bought, for around £25, a couple of
- “Realisitic” (Tandy) amplified speakers designed for use with personal
- stereo radio/tape players. (Model: Minimus-0.6 amplified speaker system
- Cat N¼ 40-1259E) Although they run off two sets of four size-C bat
- teries, they can easily be adapted to run off small battery eliminators.
- They tone in nicely with the Archimedes, but the best thing is that when
- no sound signal is received they automatically shut off, thus eliminat
- ing the “fuzz”!
-
- • RAM upgrades − If you want to up-grade the ram yourself, rather than
- trying to remove the main p.c.b. to get at the sockets where the new
- chips are to go, you can remove the front fascia. To do this, remove the
- lid, then disconnect the wires that go to the speaker and the ‘power on’
- LED by pulling the four-pin socket off the pins on the board. The tongue
- at the front of this socket is a clip that holds the socket in place, so
- ease this forwards and the socket should slip off easily. Then you can
- remove the fascia itself by undoing the five screws, three underneath
- and one at each side. Care should be taken with the eject button on the
- disc drive as this can break off fairly easily if roughly handled. (Some
- say, will inevitably break off, but a bit of super-glue or the like is
- all you need to stick it back in place.) You will then have to remove
- the bridge that supports the disc drive(s). This can be done by removing
- one screw underneath the computer (do this first) then two screws at the
- side. Plug in the chips and reverse the process, again being careful of
- the disc eject button.
- 1.3
- • Fitting a second drive is supposed to be a ‘dealer only’ upgrade,
- but as long as you know a bit about electronics and vaguely what happens
- inside computers, it is not too difficult to fit it yourself. However,
- you should watch out that the front fascia plate is not too high. If it
- is, it will bear on the disc and may cause an error when you try to
- access the disc. I discovered this when I found that the drives worked
- OK until I put the new two-hole fascia in place. My solution, when this
- happened, was “brute force and ignorance”! The metal bracket on which
- the drive is supported has a little bit of “give” in it − enough to
- raise the front of the drive by the couple of millimetres necessary to
- lift it away from the fascia.
- 1.3
- The other important thing to know is that to configure your second drive
- as drive 1 you need to move the tiny black slider switch at the side of
- the drive. It is a four position switch and usually comes in position 0,
- so one click will move it to position 1.
- 1.3
- • Anti-Buzz Fix − There are, apparently, two different buzzes. One is
- what occurs after you have pressed <escape> or <break> and the other a
- much more annoying buzz which not all computers seem to have. The first
- buzz is a software problem which is fixed in the 1.2 Arthur, so I am
- told, but the other requires a hardware fix which is supposed to be done
- by dealers as a free modification, but if you are deft with a soldering
- iron and are willing to risk your warranty, here’s what to doÉ
- 1.3
- The solution, according to Acorn’s technical services department isÉ
- 1.3
- “Solder a 100µF, 10 volt electrolytic capacitor across pins 7 (positive)
- and 4 (negative) of IC68. The capacitor should be kept as close to the
- p.c.b. as possible and should be secured to the board with glue or hot
- wax.”
- 1.3
- The bad news is that IC 68 is underneath the bar that supports the disc
- drive(s)! The easiest way to get at it is actually, (1) take off the
- lid, (2) unplug the lead that goes to the speaker and power-on LED
- (beware, the socket on the ends of the cable has a lip that locks it
- onto the pins on the board − ease the lip forward before trying to pull
- the socket off), (3) take off the front fascia (one screw at each side
- and three under the front edge) and (4) unscrew the drive-support bridge
- (one screw underneath and two at the side).
- 1.3
- • Problems with monitors − Some folk are having problems with certain
- monitors. If the problem is lack of contrast, use an oscilloscope to
- check the voltage output levels from the Archimedes. If they are less
- than 0.7 volts peak-to-peak you may need to change the values of the
- output resistors. Acorn have changed resistors R20, R41 and R59 from 68
- ohms to 43 ohms, so if you want to increase the output voltage, you
- could either change the resistors or solder a 120 ohm resistor in
- parallel with each.
- 1.3
- The other problem with some monitors, especially the NEC and Fujitsu
- multisync monitors, is of getting a greenish tinge on white areas. This
- comes about because Acorn put the sync signal onto the green line which
- is apparently what certain monitors expect. To remove this sync signal,
- simply remove resistor R39 − a quick snip with a good pair of side-
- cutters should do it, but make sure you get the right resistor!
- 1.3
- (When I tried to do these modifications, I found it wasn’t too easy to
- decide which resistor was which because the numbers are actually
- underneath the resistors. If you look at the line of resistors coming
- away from the video output socket you will see that they are: R1, R3,
- R18, R20 (68R), R35, R37, R39 (1k2), R41 (68R), R45, R50, R52, R59
- (68R), R60, R63 and R67.)
- 1.3
- • Archimedes on Econet − As far as we can gather, the Econet hardware
- to be added to the basic 305 or 310 is just the same as the module which
- you would purchase for the Master or Compact − certainly, the part
- supplied by Acorn to one of our readers had the same part number as the
- Master equivalent. One problem which Econet users may find on earlier
- systems is that even if you only want to use the disc system, you still
- have to have a clock signal available, otherwise the computer hangs up!
- Presumably this will be corrected in the 1.2 operating system! If you
- are used to using !BOOT files on the network, you will need to change
- them all to !ARMBOOT as well as having !BOOT files for the BBC. The
- Archimedes will work quite well on a Level 3 server but there are no net
- utilities like VIEW, REMOTE, NOTIFY, ROFF etc. The only one provided is
- an enhanced FREE which includes RDFREE with it. Acorn have “no plans”
- for providing these utilities. This, for schools, is quite a problem as
- you cannot get to see what is going on around the net. However, software
- transfer around the net is very easy. (These comments were kindly
- provided by Mr V Smith of King Edwards School, Lytham.)
- 1.3
- • Control key abbreviations − Lazy typists like me will like to know
- that if you want to type, say, MODE12 perhaps to list a program that was
- running in different screen mode or within a window, you can be
- abbreviate it to <ctrl-V><ctrl-L>. What you are doing is the equivalent
- of VDU22,12. On the BBC micro this was not a good idea because BASIC was
- unaware of the change of mode and would start to over-write screen
- memory with variables, but it is OK on the Archimedes because the screen
- memory is protected by having configured a certain amount of screen RAM.
- If you try it and then type PRINT MODE, it knows it is in mode 12. Other
- mode numbers can be worked out − mode 0 would be <cvtrl-V><ctrl-@>, 1 is
- A, 2-B, 3-C, 4-D, 5-E, 6-F, 7-G, 8-H, 9-I, 10-J, 11-K, 12-L, 13-M, 14-N,
- 15-O, 16-P, 17-Q, 18-R, 19-S, 20-T, 21-U.
- 1.3
- This can be extended to things like changing background colour, say to
- blue, with <ctrl-S><ctrl-@><ctrl-D><ctrl-@><ctrl-@><ctrl-@> (where
- <ctrl-@> is actually done with <ctrl-shift-2>) but there comes a limit
- where it is quicker to type in the command rather than remembering the
- control codes. You can even do all the plotting functions in this way −
- try, for example, <ctrl-Y><e><ctrl-C><ctrl-C><ctrl-C><ctrl-C>. (That’s a
- lower case “e”, not <ctrl-e> so switch caps lock off and just press <e>.
- If nothing happens, do a mode change first to a graphics mode, say MODE
- 12, then try it.)
- 1.3
- To change mode when in the Arthur Supervisor, you could use, say, ECHO
- || V || L or ECHO || S || @ || D || @ || @ || @ or you could use ECHO
- <19><0><4><0><0><0> but you can again just type in the <ctrl> sequences
- as mentioned above.
- 1.3
- • Special effects in View − You can use *ECHO or use the control key
- sequences mentioned above when you are using View. Also, if you want to
- put the ‘format block’, ‘move block’ and ‘delete block’ commands onto
- function keys 10 to 12 (instead of using the <print> key) you can use:
- 1.3
- *KEY 10 || ! || L
- 1.3
- *KEY 11 || ! || \
- 1.3
- *KEY 12 || ! ,
- 1.3
- Despite what it says in the User Guide about the pageup and pagedown
- keys not being used, they seem to work in View and they do actually move
- you a page at a time up and down.
- 1.3
- • *RMtidy − Beware that on the 0.20 Arthur, this can cause the machine
- to crash whenm you subsequently try to us *RMLOAD.
- 1.3
- • There is apparently another undocumented screen mode which will be
- available on Arthur 1.2 − mode 21 which is 640 x 512 in 256 colours,
- though it will obviously only be usable on a multi-sync monitor and uses
- 320k of RAM! Also, on the 400 series there will be two extra high
- resolution monochrome modes for 64kHz monitors − mode 22 which is 160 x
- 122 text with 1280 x 976 graphics and mode 23 which is text only at 144
- x 54. These use the extra hardware that is on the 400 series boards
- though it looks as if there should be space for the chips on the 300
- boards if you are prepared to risk fitting them yourself. There are no
- sockets, so you would have to solder-suck all the holes first, and it’s
- a multi-layer board.
- 1.3
- • Delete on keypad − If you compare the keypads of the Master and the
- Archimedes, you will see that where the Archimedes has a fullstop, the
- Master has a delete key. If you think it would be useful to have the
- delete function on the keypad, turn the num lock LED off and try
- pressing the fullstop key!
- 1.3
- • Function key definitions − If you want to know what the current key
- definitions are, *SHOW K* will print them on the screen. The only slight
- confusion is that they appear in alphabetic order − KEY$0, KEY$1,
- KEY$10, KEY$11, KEY$12, KEY$13, KEY$14, KEY$15, KEY$2, KEY$3 etc!
- 1.3
- Function key 0, as you probably know by now, is put onto the PRINT key,
- but where are the other function keys − 13, 14 and 15? The only one I
- have found is 13 which is on the INSERT key The other thing to watch is
- that although there is a separate key for function key 10 (the break key
- on the BBC micro), when you press <break>, KEY$10 is expanded as it was
- on the BBC micro! (That was on 0.2. Has it changed in later versions of
- the OS?)
- 1.3
- • Diary & notepad − The diary and notepad can be saved onto disc by
- putting the pointer on the pad or the calendar and clicking the middle
- button. It then asks for confirmation that you want to save it. The
- notepad is saved as “notepad” and the diary as “Diary87” (or whatever
- year it is for). To load them back in again later, you have to open up
- the disc and click on the required file before clicking on the diary or
- notepad with the middle button and selecting LOAD. When saving, the name
- is fixed by the desktop program, but once it has been saved, you can
- rename the file if you want to save more than one, though obviously this
- applies more to the note-pad as I know that some of you are still having
- to use the notepad as a word-processor! Having said all that, I have to
- admit that when I was trying this out, I had problems saving the
- calendar − I kept getting “Disc full” or “Disc in need of compaction”
- errors. Any offers of explanation?
- 1.3
- • The SYSTEMDEVS module is a set of logical device drivers that can be
- used from Arthur. They make the device appear to the programmer as if
- they were a file system. In Arthur 0.20 you have to load the module from
- the Welcome disc, but in 0.30 onwards it should be in ROM. They include
- LPT:, KEYBD:, PRINTER:, VDU and RAWVDU: so a simple command to copy a
- file to screen would be *COPY FILE VDU: and any non-printing characters
- appear in the format used to program the function keys, i.e. using pad
- characters so that, for example, ASCII 12 comes out as || L.
- 1.3
- What is the point of these facilities? Well, you can use them to
- redirect the flow of data into or out of a program or relating to an
- Arthur command. Thus you can say *EX {>info } which sends the output
- from the EX command to a file called “info” and *CAT {>>info } will then
- ADD the catalogue information onto the end of the info file, or *CAT
- {printer: } would print out the catalogue. *BASIC {<data } PROG would
- run the BASIC program PROG and take it input information from the DATA
- file rather than from the keyboard. Another possible application is for
- debugging a program that is sending data to a disc file. Rather than
- stopping the program and examining the disc file periodically, you could
- change the line in the program where you set up the file for output and
- use instead X% = OPENOUT “PRINT:” then subsequent PRINT#X%’s or
- BPUT#X%’s would go to the printer. If the output is un-printable (or do
- I mean non-printing?!) characters then you could set the printer into a
- hex dump format which many dot matrix printers have these days. Then a
- final suggestion for an application would be when using network and
- ADFS. To avoid switching between the two, you could say X%=OPENOUT
- “ADFS:$.TEST”. This means that you could presumably have files open on
- both the network and the disk at the same time, but not having a network
- for my solitary Archimedes, I cannot check this!
- 1.3
- (These comments were derived from an article in “Eureka” the Auckland
- BBC User Groups’ Archimedes Newsletter. Many thanks to the editor, Tony
- Krzyzewski. Write to him if you want more details of Eureka c/o Barsons
- Computers, P O Box 26287, Epsom, Auckland, New Zealand.)
- 1.3
- • ROMs that work under the emulator.
- 1.3
- Acornsoft’s Comal, Prolog and Lisp seem at first look to be OK, and one
- reader comments that Logotron’s Logo is OK but that the graphics are
- “funny” − whatever that means.
- 1.3
- Damon Hoggett reckons that to get the View series ROM’s to work, you
- need to *LOAD them at &10000 and then poke the following addresses to
- &EA (a NOP instruction) as explained last month. View B3.0: &128A2,
- ViewSheet B1.0: &10690, 691 and 692 and ViewStore 1.0: &12BCE, BCF and
- BD0 then you *SAVE filename 10000+4000 8000 8000. We made a mistake with
- the mention last month of Viewstore 1.1 (page 23). The poke should be
- ?&12BE2=&EA, not 1ABE2 and you should also poke the next two bytes,
- &12BE3 and E4.
- 1.3
- BBCSoft’s Monitor ROM seems to work OK with the emulator. You can
- apparently assemble, disassemble and single-step through 6502 machine
- code without problems.
- 1.3
- Some folk are saying the Inter-Chart works under the emulator, though
- not option 9 to import data.
- 1.3
- • BASIC editor on 0.20 OS − If you are in BASIC and you type EDIT,
- BASIC issues a *ARMBE command, so if that module is not already loaded
- into memory, it will look in the operating system ROM and then in the
- current directory on the current drive for the ARMBE module. If it is
- not there, it will come up with “Bad command”. However, if it finds it,
- it will load it into memory. Then to enter the editor, you just type
- EDIT again. So, until you get your 1.2 OS(!) it is a good idea to copy
- the ARMBE module into the directory in which you keep your BASIC
- programs so that it is ready to use at any time.
- 1.3
- • No room in RMA − If you are in BASIC and try to *RMLOAD a module,
- you may get “No room in RMA” even if the configuration is set to allow
- enough space for that particular module. But if you QUIT first into the
- Arthur supervisor you can do the RMLOAD and then go back into BASIC and
- OLD to get your program back. However, I think I would tend to save the
- program first just in case!
- 1.3
- • BASIC V tips from Colin Dean, author of ‘Advanced BASIC’ (Tubelink’s
- BASIC V look-alike for the BBC & Master)
- 1.3
- In the LIST IF command, if you put a space between the IF and the
- <string> that follows it, you get a different effect. For example if you
- have two lines:
- 1.3
- 10RECTANGLE 1,2,3,4
- 1.3
- 20 RECTANGLE 5,6,7,8
- 1.3
- Then “LIST IF RECTANGLE” shows line 20 only, whereas “LIST IFRECTANGLE”
- shows both.
- 1.3
- A neat way to test more than one expression at once, without having to
- use heavily nested IF’s is to use “CASE TRUE OF”. For example,
- 1.3
- CASE TRUE OF
- 1.3
- WHEN X=3 AND Y=4:PRINT“X=3 and Y=4”
- 1.3
- WHEN X>7, Z=0:PRINT“X>7 OR Z=0”
- 1.3
- ENDCASE
- 1.3
- However, you should beware of mixing numerics and logicals in CASE
- expressions. For example,
- 1.3
- X = 6
- 1.3
- CASE X OF
- 1.3
- WHEN TRUE : PRINT “TRUE”
- 1.3
- WHEN FALSE : PRINT “FALSE”
- 1.3
- OTHERWISE PRINT “SPURIOUS”
- 1.3
- ENDCASE
- 1.3
- this prints “SPURIOUS” because ‘6’ is neither true (−1) or false (0).
- 1.3
- • Improved boot file for WWPlus − The !BOOT file on the Archimedes
- Wordwise Plus discs is a BASIC program which checks whether the 6502
- emulator is installed and if not loads it off the Welcome disc. If
- instead you copy 65arthur onto your Wordwise Plus discs you can use a
- simpler boot file which just says:
- 1.3
- QUIT
- 1.3
- 65ARTHUR
- 1.3
- WW+
- 1.3
- and then do a *OPT 4 3 so that the computer EXEC’s the boot file instead
- of running it. If you are using the disc version of CP-ROM, just add
- 1.3
- :SELECT SEGMENT 8
- 1.3
- :LOAD TEXT “$.CP-ROM.CPstart”
- 1.3
- *FX138,0,152
- 1.3
- to the boot file and it will start up the CP-ROM as well.
- 1.3
- • Have you seen the whale?! − When playing Zarch, one or two folk have
- discovered a whale that appears in the sea (or is it a shark or a sea-
- monster?). You get 1000 points if you exterminate it and sometimes it
- “beaches” itself and becomes a much easier target. By the way, how are
- the scores going? I’ve just about managed to avoid being called a wet
- lettuce or a stuffed aubergine, but one reader, Malcolm Roberts says his
- son has reached 53,291.
- 1.3
- (STOP PRESS! I’ve just seen it too − very fleetingly. It was bluish with
- a zig-zag fin on its back!)
- 1.3
-
- • Having asked last time about function keys 14 and 15, it seems that
- they are only available when the cursor editing is switched off by doing
- a *FX4,2 after which, cursor right, down and up give definitions 13, 14
- and 15. (Remember that 13 is normally available on the insert key
- anyway.)
- 1.4
- • Word-Perfect does not work under the PC-Emulator at present. This is
- due to a bug in the emulator which is being fixed − a new version will
- be available “shortly”.
- 1.4
- • If you want to read the mouse when using the 6502-emulator, this can
- be done in BASIC IV by using ADVAL 7 and 8 to return the X and Y co-
- ordinates respectively. 6502 machine code programs can be modified to
- use OS_Byte 128 with X=7 to give the X value and X=8 to give the Y
- value. The co-ordinates are returned in the X and Y registers, X being
- the low byte and y the high byte.
- 1.4
- If you want to read the mouse buttons from BASIC IV, use INKEY(-n) where
- n=10, 11 and 12 for select, menu and adjust respectively and in machine
- code use OS_Byte 129 with X containing the -n number (&F6, &F5 and &F4)
- and Y containing &FF.
- 1.4
- • Users of the Acorn colour monitors may not have realised that there
- is a switch inside the control panel at the front of the monitor which
- switches off all but the green gun. Depressing this switch makes the
- display slightly easier to read, especially if you are trying to use a
- 132 column mode.
- 1.4
- • Setting the “*TIME” format − The output format used by *TIME can be
- changed via a ‘*SET Sys$DateFormat’ command. The following is a list of
- the valid parameters and the result they will return:
- 1.4
- %am Display ‘am’ or ‘pm’ depending on the time.
- 1.4
- %pm Display ‘am’ or ‘pm’ depending on the time.
- 1.4
- %ce Current century
- 1.4
- %cs (Centiseconds) Hundredths of a second
- 1.4
- %dn Day number (001 = 1st January)
- 1.4
- %dy Day of the month
- 1.4
- %mi Minutes
- 1.4
- %mn Month number
- 1.4
- %mo Current month (e.g. ‘January’)
- 1.4
- %m3 Current month abbreviated to 3 characters (e.g. ‘Jan’)
- 1.4
- %se Seconds
- 1.4
- %st Day of the month trailer (i.e. ‘st’, ‘nd’, ‘rd’ or ‘th’)
- 1.4
- %we Weekday (e.g. ‘Wednesday’)
- 1.4
- %w3 Weekday abbreviated to 3 characters (e.g. ‘Wed’)
- 1.4
- %wk Week number (since start of year)
- 1.4
- %wn Weekday number (1 = Sunday, 7 = Saturday)
- 1.4
- %yr Current year (e.g. 87)
- 1.4
- %12 Hours on 12 hour clock
- 1.4
- %24 Hours on 24 hour clock
- 1.4
- Note that changing the format does not affect the TIME$ format as used
- in BASIC V.
- 1.4
- The default setting, which is: %w3,%dy %m3 %ce%yr.%24:%mi:%se, can be
- seen by typing *SHOW S*.
- 1.4
- If the date or the year is changed, the day of the week is automatically
- recalculated, so no errors occur. (See competition results on page 46.)
- 1.4
- Other characters may also be inserted into the definition of the *TIME
- format. For example,
- 1.4
- *SET Sys$DateFormat %we, %dy%st %mo, %ce%yr. Time: %24:%mi [%se seconds]
- 1.4
- will produce output in the form: “Monday, 07th December, 1987. Time:
- 12:07 [45 seconds]”.
- 1.4
- If you want to strip off the leading zero on the %dy output, use %zdy%st
- which will produce “7th December”. If you want, for some reason to have
- the character ‘%’ as part of the format, use “%%”.
- 1.4
- If you want to split the string into several zero-terminated strings,
- you can use ‘%0’ which will insert a zero byte into the string.
- 1.4
- New time formats in BASIC − If all you want to do is print out the value
- of time within a BASIC program you can simply use the star command *TIME
- as a line within the program. If however you want to pick up the time as
- an actual string, you need to use the following function:
- 1.4
- DEF FNnewtime
- 1.4
- LOCAL Workarea, Time$
- 1.4
- DIM Workarea 256
- 1.4
- ?Workarea = 3
- 1.4
- SYS “OS_Word”,14,Workarea,256
- 1.4
- SYS “OS_ConvertStandardDateAnd Time”,Workarea,Workarea,256 TO Time$
- 1.4
- =Time$
- 1.4
- Help!!! The format which the system uses to record time and date is a 40
- bit number (as used to store the datestamp of a file) but we have not as
- yet found a system routine to convert any date into this format. Has
- anyone found such a routine or written anything of the sort?
- 1.4
- • Break/escape effects − To control the effects of <escape> and
- <break> with various combinations of <ctrl> and <shift>, you can use
- *FX247,n where n is a binary number whose eight bits control the various
- effects as follows:
- 1.4
- Bits 7 and 6 control action of <shift-ctrl-break>
- 1.4
- 7 6
- 1.4
- 0 0 − “Normal action” (= hard reset + boot drive 0)
- 1.4
- 0 1 − Acts like <escape>
- 1.4
- 1 0 − Disables <shift-ctrl-break>
- 1.4
- Bits 5 and 4 control action of <ctrl-break>
- 1.4
- 5 4
- 1.4
- 0 0 − Hard reset
- 1.4
- 0 1 − Acts like <escape>
- 1.4
- 1 0 − Disables <ctrl-break>
- 1.4
- Bits 3 and 2 control action of <shift-break>
- 1.4
- 0 0 − Boots disc in drive 0
- 1.4
- 0 1 − Acts like <escape>
- 1.4
- 1 0 − Disables <shift-break>
- 1.4
- Bits 1 and 0 control action of <break>
- 1.4
- 0 0 − Soft reset
- 1.4
- 0 1 − Acts like <escape>
- 1.4
- 1 0 − Disables <break>
- 1.4
- The default setting (on 0.20 OS) seems to be *FX247,1 so that all works
- “as normal” except that the break key has been turned into another
- escape key. Typing *FX247,0 or just *FX247 turns the break key into the
- old “proper” break key that BBC owners will remember, i.e. it does a
- soft reset, as does the reset button on the back of the keyboard.
- 1.4
- • When you re-load a picture created by the ARM-Paint program, you
- sometimes find that certain of the colours are flashing. To avoid this,
- add a line to the PAINTING program:
- 1.4
- 18165 *FX9
- 1.4
- which should fix the problem. It actually flashes while the picture is
- being loaded but then the flashing stops when this line is executed.
- 1.4
- • Long printer cables. Those of you who have been using very long
- printer cables on the BBC micro will find that the Archimedes’ printer
- output has not got sufficient drive to cope with more than about 2
- metres of cable. The only way to get round this would be to use a
- printer buffer that had a higher output drive capability.
- 1.4
- • For an interesting sound effect (on 0.30 Arthur), type in
- “*Configure Sounddefault 1 7 7” followed by <ctrl-break>. This alters
- the bell sound as produced by VDU7. To return to normal, set Soundde
- fault 1 7 1.
- 1.4
- • For those who still haven’t got a word-processor (you did fill in
- your registration form, didn’t you?!?) and are wanting to use the BASIC
- editor as a wordprocessor, type *KEY0 L.O8||ML.||B||M||A||?||A||?||C and
- you will find that the ‘print’ key lives up to its name.
- 1.4
- • ROMs that work under the emulator. The second processor version of
- ISO Pascal (files Dpascal and Dcomp on the disc that comes with the two-
- ROM set) works fine under the emulator though the compilation time is a
- little slower than on the Beeb.
- 1.4
- Anyone who has the EDIT software from the BBC Master can transfer it to
- the Archimedes and it seems to work OK. There appears to be a strange
- message when the software is called and if the function key help screen
- is selected, it looks a bit peculiar. If you only want to process small
- amounts of text (about 30k) then use EDIT − it’s much cheaper than
- buying TWIN for £30.
- 1.4
- • The default values of the parameters in the HardcopyFX module are
- 0,1,1,0,1 which gives, in order, landscape (i.e. sideways − to get
- portrait, use 1), X and Y scale factors of 1 (no limit, it seems, but
- you can’t use fractions), the margin which is measured in 1/72 nds of an
- inch with a maximum of 576 and finally the threshold (the colour number
- which determines whether a dot is printed or not, I presume) which can
- take values up to 255. There is a clever “Printer Time Out” error built
- into the code in case the printer is not connected.
- 1.4
- • Switching off the desktop on Arthur 1.2.
- 1.4
- If, having changed from operating system 0.2 to 1.2, you don’t like
- going into the desktop every time you switch on, you can *CONFIGURE
- Language 4 and <ctrl-break> and you will be brought into BASIC instead.
- The desktop can then be called up with *DESKTOP at any time. If you
- decide to go back to initialising into the desktop, *CONFIGURE Language
- 3 should do the trick.
- 1.4
- Do keep the hints & tips coming. They are one of the most useful parts
- of the magazine − do you agree? We could do with more feedback about
- what you like and what you don’t.
- 1.4
- The trouble is that you remember that you read something but cannot
- remember in which issue or on which page so we’re hoping to do a full
- Archive index − anyone like to start it off for us? Would you like just
- a paper index or one on database? Let me know what you think.
- 1.4
- Watch out too for a binder for your Archive magazine. More details next
- month.
-
- • Text files for BASIC. I always used to write my BASIC programs in
- Wordwise and put an AUTO command as the top line then go into BASIC and
- NEW and then *EXEC <filename>. But IÕve just discovered (what IÕm sure
- you all knew already) that BASIC can do it for me. You donÕt have to put
- AUTO at the top you just say *BASIC -LOAD <filename> and it will load
- the text version of the program and put line numbers onto it. However,
- as with the *EXEC technique, you cannot use long multi-statement lines
- or you will get the “Line too long” error.
- 1.05
- (One reader, who was using Arthur 0.2, found that text files longer than
- 32k got corrupted, but I tried it on my system with BASIC 1.02 and
- Arthur 1.2 and it seemed OK.)
- 1.05
- • Fast screen save. This is obviously something which a number of you
- have been thinking about. I got a lot of response to my pleas for help.
- Several of you gave ways of *SAVEing the screen information from the
- appropriate bit of RAM and re-loading it there, though this obviously
- will not bring with it the palette information or the correct mode. For
- example:
- 1.05
- DEF PROCscreensave(filename$)
- 1.05
- LOCAL K%
- 1.05
- CASE MODE OF
- 1.05
- WHEN 0,1,4,5,6 : K%=20
- 1.05
- WHEN 2,3,8,9,11,18 : K%=40
- 1.05
- WHEN 7,10,12,13,14,19 : K%=80
- 1.05
- WHEN 16,17 : K%=132
- 1.05
- WHEN 15,20 : K%=160
- 1.05
- ENDCASE
- 1.05
- !&80=149:!&84=-1
- 1.05
- SYS 49,&80,&88 : REM OS_ReadVduVariables
- 1.05
- OSCLI“SAVE ”+filename$+“ ”+STR$
- 1.05
- ~(!&88)+“ +”+STR$~(K%*1024)
- 1.05
- ENDPROC
- 1.05
- This takes only a second or two to save the screen. It can be reloaded
- by typing *LOAD filename. The program saves the whole screen, not just
- the graphics window. You must not have scrolled the screen prior to
- saving or re-loading, but a CLS before re-loading will cancel the
- scrolling. Also, you must be in the right mode for the screen you are
- about to load and you need to have the same screen colour definitions
- set up.
- 1.05
- What we have been promised though is a module, which we hope to publish
- next month, which will give you legal *commands (or SWIs) for loading
- and saving screen information including palette and mode and you will
- find that it is several times faster than the existing SCREENSAVE
- routines.
- 1.05
- • Extra help on BASICÉ (OS1.2) If you type *BASIC -help<return> you
- get a bit more help information about BASIC. (But does anyone know what
- the last two bits refer to? i.e. what is an “in-core” program? Does it
- mean you can have more than one program in memory?)
- 1.05
- • ADFS: If you name all your discs with *NAMEDISC, the Archimedes will
- remember the previously mounted discs. So, for example, if you put in a
- disc called TESTING and you *MOUNT it and then put in a disc called
- BASICPROGS and *MOUNT that, you can then see the directory of TESTING
- without putting the disc back in again. All you do is type *MOUNT
- TESTING and you can *CAT it. If you then want to look at the disc that
- is in the drive, you will of course have to *MOUNT again. The only
- problem occurs when you have backup discs because they will have the
- same name — this gives “Ambiguous disc name”.
- 1.05
- • Sprite Editor. “To create a new spriteÉ” It took me ages to find out
- how to create a new sprite. The manual tells you to click on the
- “Create” box and “you are then prompted for a name and a mode”. I was
- expecting a prompt something like: “Please enter name:”. I saw the words
- “Create sprite” appear at the bottom of the screen and assumed it wanted
- some sort of confirmation that that was what I wanted to do, but
- whatever I did, the words disappeared again! In fact that is the actual
- prompt that the manual was referring to! All you do is type in the new
- name and press <return>. You would have thought they could have put in a
- more obvious prompt than that — or maybe just switched on the cursor to
- indicate that it was time to type something rather than click on the
- mouse buttons, but perhaps I have been spoiled by using the Apple Mac
- where prompts are rather more obvious and logical! Huhh!
- 1.05
- • Reading the catalogue. An easier way to read the contents of a
- catalogue, rather than reading it off the screen (see Gus GemÕs article
- last month) is to use SYS “OS_GBPB” as followsÉ
- 1.05
- DIM C% 999
- 1.05
- !&80=&2A00
- 1.05
- SYS “OS_GBPB”,9,&80,C%,999,0,
- 1.05
- 999 TO ,,,ENTRIES
- 1.05
- This stores the filenames and sub-directories of the current directory
- at the address C%, in alphabetical order and each terminated by a zero
- byte. The number of entries is stored in the BASIC variable ENTRIES.
- 1.05
- • Neater than OSCLIÉ SYS 6 (equivalent of FX calls) is much neater
- than using OSCLIs: e.g. Matthew TreagusÕ screen bank switching would
- look neater if, instead of using OSCLI (“FX112,”+STR$N%) he had used SYS
- 6,112,N%. If you donÕt like the anonymity of SYS 6, you can use SYS
- “OS_Byte”,112,N%. (See GeraldÕs article on page 12.)
- 1.05
- • BeebugÕs Masterfile can be made to work on the Archimedes without
- using the emulator — it just needs a very few modifications — contact
- DrÊÊPeter Catermole at Winchester College, Kingsgate Road, Winchester,
- SO23 9PG.
- 1.05
- • BBC ROMs — Continuing the saga of poking various bytes to get BBC
- ROMs to work under the emulator, View B3.0 should apparently have A8A1,
- 2 and 3 poked to &EA and Viewspell 1.0, &820F, 8210 and 8211 likewise.
- 1.05
- • When setting the clock, the setting box sometimes covers the face of
- the clock, so point at the bottom right hand corner of the clock box and
- then press the middle mouse button.
- 1.05
- • Plugging modules in and out. ItÕs all very well to have lots of
- modules in the 1.2 ROM but, at power up, several of these modules are
- installed into ram which cuts down your available memory. Exactly which
- ones are installed is set by various bytes in the CMOS ram. To find out
- what all the modules are and whether they are actually active, type
- *ROMModules. (or just *ROM. for short.) You can “unplug” the modules by
- using *UNPLUG <modulename> and it stays unplugged until you “insert” it
- again with *RMREINIT <modulename>. It seems that the extra space does
- not become available until you press <ctrl-break>. If you type *UNPLUG
- without a module name it tells you which modules are currently
- unplugged.
- 1.05
- • HowÕs this for a screen dump? (sent in by Ken Yeardley) It is for
- mode 0, it works on the NEC PC8023, it can be put on a function key and
- it only takes 118 seconds.
- 1.05
- VDU2,1,27,84,1,&31,1,&36: FOR
- 1.05
- A%=&1FDCFB0 TO &1FDCFFF:VDU2,
- 1.05
- 1,27,83,1,&30,1,&35,1,&31,1,&32:
- 1.05
- FOR B%=A% TO A%-20400 STEP-&50:
- 1.05
- VDU1,?B%,1,?B%: NEXT: VDU1,10:
- 1.05
- NEXT: VDU3
- 1.05
- The reason it is so short is that the NEC printer has the MSB and LSB of
- the byte that defines which pins hit the paper, the opposite way round
- from Epson printers. (See page 9 for a sample screendump.
- 1.05
- • Beware the microwave! One reader was having problems with data
- corruption on the RS423 but it turned out to be only when his wife was
- using the microwave oven four yards away, the other side of a brick
- wall!
- 1.05
- • HereÕs a little routine sent in by Mike Hobart which uses the
- debugger module for disassembly and memory dumps. It doesnÕt quite rival
- Toolkit, but itÕs a bit cheaper!
- 1.05
- INPUT“Disassembly or Memory dump? (D/M)”,R$
- 1.05
- CASE R$ OF
- 1.05
- WHEN “d”,“D” : N%=FNi:REPEAT PROCx(“I”,N%,“ +10”):UNTIL FALSE
- 1.05
- WHEN “m”,“M” : N%=FNi:REPEAT PROCx(“”,N%,“ +FF”):UNTIL FALSE
- 1.05
- ENDCASE
- 1.05
- END
- 1.05
- DEFPROCx(S$,M%,L$)
- 1.05
- WHILE INKEY(-99)
- 1.05
- OS_CLI(“MEMORY”+S$+“ ”+
- 1.05
- STR$~(N%)+L$)
- 1.05
- N%=N%+100
- 1.05
- ENDWHILE
- 1.05
- ENDPROC
- 1.05
- DEFFNi
- 1.05
- INPUT“From(Address &nnnnnn)”‘N$
- 1.05
- PRINT“Press <space> to scroll”
- 1.05
- IF ASCN$<>ASC“&”THEN N$=“&”+N$
- 1.05
- =EVAL N$
- 1.05
- • Desktop on 1.2. (All the remaining H & T are based on material sent
- in by Bruce Roberts.) As an alternative to double clicking on <select>
- to open a file or run an application, try a single click on the adjust
- button — it has the same effect.
- 1.05
- The quick way to open a diary (or notepad), rather than opening the
- diary window first and then pressing <menu>, is to double click on the
- diary icon on the disk directory — the window opens automatically.
- 1.05
- You can now save diaries and notepads with whatever name you like and
- you can also click, or move with the cursor keys, and put text anywhere
- in the window.
- 1.05
- The following keys can now be used on diary and notepad:
- 1.05
- <insert> Insert single character
- 1.05
- <copy> Delete character to the right of
- 1.05
- the cursor
- 1.05
- <ctrl-insert> Insert a line above the cursor
- 1.05
- <ctrl-copy> Delete a line
- 1.05
- <shift-left/right> Move 4 characters sideways
- 1.05
- <ctrl-left/right> Move to the end of the line
- 1.05
- Notepads can be created from within View by saving a file (up to 100
- lines, 78 characters wide) and then doing a *SETTYPE <filename> &FEE.
- Existing notepads can be edited with View provided you use READ
- <filename> instead of LOADing it and WRITE <filename> instead of SAVEing
- it.
- 1.05
- • After using the desktop, the function keys do not produce the normal
- programmable strings or ASCII values. It seems that this is because
- Acorn have not stuck to their own rules (see ProgrammersÕ Reference
- Manual, page 488) because they do not call SWI Wimp_ CloseDown. The
- “fix” published elsewhere of typing *FX225,1 is fine if you only want to
- restore the strings to f0 - f9. To get f10 - f12 back, you need *FX221,1
- but the simplest thing seems to be to make sure that everything is back
- to its default setting by using a program, perhaps called QUIT, which
- you can run from the desktop instead of clicking on the exit icon. To
- set the default of all the combinations of <ctrl> and <shift> with all
- the function keys, you need:
- 1.05
- *FX225,1
- 1.05
- *FX226,&80
- 1.05
- *FX227,&90
- 1.05
- *FX228,0
- 1.05
- *FX221,1
- 1.05
- *FX222,&D0
- 1.05
- *FX223,&E0
- 1.05
- *FX224,&F0
- 1.05
- MODE 0
- 1.05
- *BASIC
- 1.05
- If you donÕt put in a MODE statement, youÕll find yourself typing
- invisibly! The *BASIC means you come out into BASIC but with no program
- in memory.
- 1.05
- As an alternative, you could miss out the call to BASIC and put:
- 1.05
- W%=GET
- 1.05
- *MOUNT
- 1.05
- *!BOOT
- 1.05
- The idea would be that you would click on this program, change to the
- disc you want to boot up, and press a key. You may want to include a
- prompt to the user to “replace disc and press space bar” or somesuch.
- The use of *!BOOT means that it doesnÕt matter if the boot file should
- be *EXECed or *RUN — either will be done by the *!BOOT according to the
- file type.
- 1.05
- • Avoiding the desktop. If you don’t want to go into the desktop every
- time you switch on or press <ctrl-break>, do a *CONFIGURE LANGUAGE 4 and
- press <ctrl-break>. When you want to go into the desktop, type *DESKTOP
- or *DES. for short. If you change your mind, *CON. LANG. 3 will bring
- you into desktop at switch on or LANG. 0 will start you in the super
- visor mode.
- 1.05
- • View boot file. Here is a more sophisticated boot file than the one
- we gave originally:
- 1.05
- *ECHO<22><3>
- 1.05
- *| selects mode 3
- 1.05
- *GOS
- 1.05
- *65ARTHUR
- 1.05
- *GO F800
- 1.05
- *LOAD VIEW 8000
- 1.05
- *GO 8000
- 1.05
- *ECHO<19><0><16><48><48><240>
- 1.05
- *| sets background colour
- 1.05
- *ECHO<19><1><16><240><240><208>
- 1.05
- *| sets foreground colour
- 1.05
- *ECHO<19><2><24><240><128><0>
- 1.05
- *| sets border/line colour
- 1.05
- SET FI
- 1.05
- *| sets Format and Insert modes
- 1.05
- NEW
- 1.05
- • Avoiding *MOUNT. To avoid typing *MOUNT each time you put a new disc
- in the drive, you can set an alias with, for example, *SET ALIAS$? MOUNT
- | M CAT so that when you type *?<return> it does the mount and the
- catalogue all in one.
- 1.05
- • Centronics GLP screendump. The *HardCopyMX nearly works because the
- printer is Epson-compatible-ish! All you need to do is issue, from
- BASIC, the following codes:
- 1.05
- VDU2,1,27,1,65,1,8,1,27,1,50,3
-
- • (1.2 OS) If you want to look at the desktop manager programs and
- perhaps modify them and run them from disk, the following information
- may be of use:
- 1.6
- The DESKTOP has its own filing system activated by *DESKFS. If you do a
- *CAT, you will get: DeskTopMgr
- 1.6
- DeskTopMgr2
- 1.6
- &.!palette
- 1.6
- Icons.Desktop
- 1.6
- Icons.Calculator
- 1.6
- Icons22.Desktop
- 1.6
- Icons22.Calculator
- 1.6
- You can then LOAD the DeskTopMgr2 program and LIST it. (DeskTopMgrÊis
- just the 5-line startup program that gets left in BASIC when you exit
- the desktop.)
- 1.6
- If you change back to *ADFS, you can then save the program. To copy the
- palette and/or the Icons, you have to use commands such as:
- 1.6
- *COPY DESKFS:I*.Desktop $.I*.Desktop
- 1.6
- (assuming you are in ADFS and have created a directory called Icons)
- 1.6
- To run the program from disk, you need the icon and palette files to be
- copied across then if you fancy tackling 76k of “crunched” BASIC
- program, you can try editing it!
- 1.6
- • If you are using the decrement or increment (+= or −=) in a BASIC
- program and you get a “Mistake” error on that line, the chances are that
- you have forgotten to initialise the variable. Try typing X=X+1:PRINT X
- and it will give the value 1 but if you type Y+=1 it will say “Mistake”.
- What it really should say is “Unknown or missing variable”, but still,
- good programmers won’t get the problem because we always remember to
- initialise all our variables, don’t we? (We do?)
- 1.6
- • Testing multi-sync output without a multi-sync monitor! If you are
- writing software and hoping to sell enough of it to be able to afford a
- multi-sync monitor(!) you have the problem of testing your software in
- modes 18 to 20. If you use *Configure MonitorType 1, modes 0 to 17 are
- still displayed as normal then when you select modes 18 to 20 and
- generate the screen output, you can use a screendump (such as Gerald
- Fitton’s minidump or *HardCopyFX) to look at what you’ve got. If you’re
- worried about damaging the monitor, switch it off before changing mode.
- 1.6
- • Using large printer buffers etc. If you’re using a buffer that’s
- larger than 64 kbytes, it’s no use trying to use ADVAL with a negative
- number (e.g. PRINT ADVAL(-4) for the printer buffer) − it only returns
- the least two significant bytes. Instead, use SYS “OS_Byte”, &80, &FC TO
- , X%, Y% : bytes_free%= X%+256*Y% where &FC is the − 4 value. (Actually,
- instead of working out that − 4 is the equivalent of &FC you can, it
- seems, be lazy and use − 4 in the SYS command. Ed.)
- 1.6
- • Easy loading of modules: To enable you to load the emulator and fast
- BASIC easily, you can create some library programs on your Welcome disc
- (or better still, a copy of your Welcome disc!). This is what you do for
- fast BASIC:
- 1.6
- *BUILD LIBRARY.FAST
- 1.6
- *FX225,1|M
- 1.6
- *KEY1 QUIT||M*MODULES.RAMBASIC
- 1.6
- ||M*KEY1||MCLS||MHELP||M
- 1.6
- *FX138,0,129
- 1.6
- <escape>
- 1.6
- and then change it into a BASIC program with
- 1.6
- *SETTYPE LIB*.FAST &FFB<return>.
- 1.6
- Note that there are double pad characters before each ‘M’ in order that
- when the program line is run, each double pad character is interpreted
- as a single pad character for the actual key definition.
- 1.6
- The bits after calling the module are optional. The first is to clear
- key1 again in case you press it accidentally. The second is to clear the
- screen and the third is to give a help message to show that you are
- actually in RAM_BASIC. (See below).
- 1.6
- Once this is set up, to get into fast BASIC all you do is type
- *FAST<return>.
- 1.6
- For the 6502 emulator, use the name LIB*.6502 and don’t put the HELP
- command in because that does not work on BASIC IV.
- 1.6
- • Tidying up after ArcWriter! You can do a similar thing to the above
- hint in order to tidy up after using ArcWriter.
- 1.6
- *BUILD LIBRARY.RESET
- 1.6
- *FX225,1|M
- 1.6
- *KEY1 QUIT||M*CONFIGURE FONTSIZE
- 1.6
- 2||M*RMREINIT FONTMANAGER||M
- 1.6
- *RMTIDY||M*BASIC||M
- 1.6
- *KEY1||MHELP||M
- 1.6
- *FX138,0,129
- 1.6
- <escape>
- 1.6
- Typing *RESET will do the tidy-up for you.
- 1.6
- • Identifying RAMBASIC. To get RAM_ BASIC to tell you that it actually
- IS the RAM version and not the ROM version, you can change a few bytes
- so that it prints out ‘RAM BBC BASIC’ instead of ‘ARM BBC BASIC’ on the
- startup and HELP messages. To do this, proceed as follows:
- 1.6
- *LOAD MO*.RAM* 20000
- 1.6
- ?&202B0=ASC“R”
- 1.6
- ?&202B1=ASC“A”
- 1.6
- ?&23F78=ASC“R”
- 1.6
- ?&23F79=ASC“A”
- 1.6
- *SAVE MO*.RAM_BASIC 20000 +E434
- 1.6
- *SETTYPE MO*.RA* &FFA
- 1.6
- • Reversing the CAPS lock. If you hold down the shift key when you put
- the CAPS lock light on, you will find that the shift key now has the
- opposite effect, i.e. letters typed without pressing shift come up as
- uppercase letters, but when you press the shift key you get lower case
- letters. This can be useful if you are programming and mostly work in
- upper case but with occasional use of lower case.
- 1.6
- • Displaying screens in different modes. If you have a screen that has
- been SCREENSAVE’d, you can display it in another mode. (e.g. Artisan
- screens in 256 colour modes!) Assuming you have configured spritesize to
- at least 11, proceed as follows:
- 1.6
- MODE 13
- 1.6
- *SLOAD filename \ NOT
- 1.6
- *SCREENLOAD
- 1.6
- *SCHOOSE screendump
- 1.6
- PLOT &ED,0,0
- 1.6
- You will note that the palette has changed and that it is a lower
- resolution, however, it will still be quite decent and you will have all
- those lovely colours to play around with!
- 1.6
- If you choose mode 15, you will get the same picture displayed in 256
- colours but squeezed into only half the screen width.
- 1.6
- If you want to change the colours you will have to load it into the
- sprite editor (SEDIT) and change the colours manually.
- 1.6
- • Using the View Series. You will find that after coming from the
- desktop, TAB does not work. The solution is to type *FX219,9.
- 1.6
- ViewProfessional works fine if you use the second processor version −
- the VP file on the 5.25“ disk − however it should be *LOAD’ed at 4000
- (not 8000) and called with *GO 4000. (See page 5, Archive 1.1)
- 1.6
- • Diary/Notepad problems. Beware: If you are printing something from
- notepad or diary, check that an active printer is on-line before
- starting to print otherwise the system may hang up and the only way out
- is to press <ctrl-break> − frustrating if you haven’t saved the text
- first!
- 1.6
- • Slower listings. I know this is obvious to ex-BBC users, but I’ve
- not seen mentioned anywhere the fact that holding <ctrl> and <shift>
- keys down together will stop the screen scrolling. Archimedes lists
- programs so quickly that even if you use <ctrl-N> to get a paged
- listing, you may well get two pages instead of one if you hesitate on
- pressing the shift key, so using <ctrl> and <shift> allows you to
- control the listing yourself.
- 1.6
- • File transfer between wordprocessors. If you have Wordwise Plus or
- View files and you want to import them into GraphicWriter, use *SETTYPE
- filename &FFF to ensure that GraphicWriter sees them as text files.
- (Actually it should already see Wordwise Plus files as text because of
- the save address that Wordwise Plus uses − check by doing *INFO *.) Then
- you can simply load the files into GraphicWriter using the file menu. To
- transfer the files back to View or Wordwise, you need to save them as
- ASCII files. This is done by opening the file menu then clicking on the
- word “TEXT” with the ADJUST button, typing in a filename and pressing
- <return>.
- 1.6
- (I tried to do the same sort of thing with ArcWriter but it kept
- crashing each time I tried to load a file, so I gave up!)
- 1.6
- • Smart ON ERROR routine. If your ON ERROR routine includes the
- following, you get the usual error message and then, if you press any
- key other than <escape> it will drop into the ARM BASIC editor at the
- offending line. So if you do not want to go into the editor, press
- <escape> instead.
- 1.6
- ON ERROR OFF
- 1.6
- PRINT REPORT$+“ at line ”;ERL
- 1.6
- dummy%=GET
- 1.6
- SYS 5,(“KEY0 EDIT ”+STR$(ERL)
- 1.6
- +“|M”)
- 1.6
- SYS 6,138,0,128
- 1.6
- END
- 1.6
- If you prefer to move into EDIT a few lines above the offending line,
- use STR$(ERL−50) or whatever.
- 1.6
- • Dual purpose boot files. It is quite possible to have a boot file
- that will work equally well from within the desktop or as a conventional
- boot file operated with <shift-break>. What you do is *BUILD the file as
- usual but then *settype <filename> &FFB which gives it a link to BASIC.
- If you then double-click on it in the desktop, it adds line numbers to
- it and runs it as a BASIC program. However, it will only work with
- <shift-break> if the machine is configured to start up in BASIC, not in
- the desktop (i.e. *CON. Language 4, not 3).
- 1.6
- • With the PC emulator you can get more space than Mark Sealey
- reckoned in his review last month by *unplugging various of the modules.
- On reader reckons to get almost 590,000 bytes free (= 576k).
- 1.6
- • Disabling Modules. Archive no.5 explains how *Unplug can be used to
- disable Modules, but this method needs a <ctrl-break>. An alternative is
- to use *RMKill and *RMTidy from the operating system *-prompt (not from
- BASIC), e.g.
- 1.6
- *RMKill FontManager
- 1.6
- *RMKill StringLib
- 1.6
- *RMKill Percussion
- 1.6
- *RMKill ARMBasicEditor
- 1.6
- *RMKill WindowManager
- 1.6
- *RMTidy
- 1.6
- This typically releases 96 Kbytes of memory on an A310 machine and
- doesn’t need a <ctrl-break>. It is particularly useful if you’re short
- of space in BASIC, Pascal or FORTRAN, etc and aren’t using fancy sound,
- the WIMP environment or the BASIC editor. Each module can be reinstated
- by using *RMReinit <Module name>, or all can be restarted by <ctrl-
- break>.
- 1.6
- • GW BASIC on the PC Emulator. There is an undocumented way to get
- back into the MS-DOS operating system after using GW BASIC. Try pressing
- function key f-11.
- 1.6
- • PC Emulator. Version 1.09 (which existing users can get by sending
- back their old disc plus £15 to Acorn) runs, amongst other things,
- Ability Plus, dBase 3 Plus, Kermit, Word Perfect, LTS NewsMaster (see
- separate review). (Can anyone add to this list?)
- 1.6
- • RS423É yet again! If you have the 1.2 operating system and if you
- have the version of the serial chip that is made by GTE (it’s the 28 pin
- IC at the back left of the pcb) and if you change over from using the
- CTS line at the Archimedes end to using the DSR line (i.e. link 1, 4 and
- 8 and join pin 6 to the RTS line from the other machine) then Acorn have
- a fix which you load in as a module. Send a blank disc to Customer
- Services to get a copy. The version they sent me didn’t work the first
- time I tried it with some data transfer software so I pressed <escape>
- and tried again and it worked perfectly at 19,200 baud. Then I tried
- again and it wouldn’t send anything, pressed <escape> and away it went!
- Still, when you do get it going it sends and receives at 19,200 baud in
- both directions without any data corruption. I left it running for a
- couple of hours and there was no corruption at all.
- 1.6
- • After the desktopÉ simpler than the list of FX commands that we gave
- last month is to call SYS“Wimp_CloseDown” (which is what Acorn should
- have put in their desktop program in the first place!!!) but if you
- don’t fancy trying to type that every time, getting upper and lower case
- exactly correct, you can create a one line BASIC program with 10
- SYS“Wimp_Close Down” and save it on your disk as $.library. undesk and
- then just type *undesk (or whatever abbreviation you can get away with)
- and all will be restored to normal.
- 1.6
- • Using the Seikosha 250X printer is a bit of a problem. When you plug
- it into the Archimedes, all power is lost. This seems to be because of
- the +5.0 volts on lines 18 and 36 of the printer connector − these are
- earthed at the Archimedes end and so have to be disconnected somehow.
- One reader, Adrian Moreton, has succeeded but it is too complicated to
- explain here. If you want the information, send us an s.a.e. and we’ll
- send you a photocopy of his letter and the excellent diagrams he has
- drawn.
- 1.6
- • ADFS wildcards. Had you gathered that ADFS will take * or #
- wildcards anywhere in a filename? On the BBC, you could only put them at
- the end of the filename. So, for example, if you’ve got PROGRAM1,
- PROGRAM2, PROGRAM3 etc you only need to say something like LOAD “PR*2”
- or even LOAD “*2” if none of the other files have numeric endings. That
- makes life much easier, doesn’t it?! (Thanks to Benjamin Finn for
- pointing that out. The next hint is his, too.)
- 1.6
- • Errors in library procedures. If an error occurs in a PROC or FN
- that is installed using LIBRARY or INSTALL, the correct error message is
- given but the line number quoted is the last number in the main program.
- Although we cannot get a line number pointer to the error, we can at
- least find out from which procedure in the main program the library
- routine was called when the error occurred.
- 1.6
- At the beginning of each definition of a PROC or FN you should put
- something like:
- 1.6
- DEF PROCdosomething
- 1.6
- LOCAL ERROR
- 1.6
- ON ERROR LOCAL PRINT REPORT$
- 1.6
- “ in PROCdosomething”:END
- 1.6
- .
- 1.6
- .
- 1.6
- ENDPROC
- 1.6
- • Help with Econet is offered by Michael Ryan of XOB, Balkeerie,
- Eassie, By Forfar, Angus, DD8 1SR. Michael says, “Here are some comments
- about Archimedes on Econet in response to comments in Archive 1.3, page
- 8.
- 1.6
- “RDFREE is part of the Econet filing system module and hence not a disc-
- based utility as with the BBC version. Issued with a user identity as
- parameter, it gives the total disc free space and that user’s allocated
- portion of it. Issued with no parameter, it returns the user’s own free
- space and the total free space.
- 1.6
- “Acorn are supplying a number of other utilities including SETFREE,
- SETSTAT, USERS, PROT and UNPROT, though they have not yet made it clear
- how they are to be distributed, so don’t hold your breath.
- 1.6
- “Though it is very unlikely that they will supply the more sophisticated
- utilities (VIEW, REMOTE, NOTIFY etc) all is not lost. XOB already have a
- wide range of utilities for the BBC/Master series and have already
- implemented several of them on the Archimedes. More details from us on
- 0307−84364.”
-
- • Most of the keys on the numeric pad have secondary functions if used
- with the Num Lock off. In BASIC, 1 gives copy, 2 and 3 are both cursor
- down, 4 is cursor left, 5 doesn’t seem to do anything, 6 is cursor
- right, 7 is ‘cursor home’ and 8 and 9 and cursor up. In View, the single
- cursor movements are 2, 4, 6 and 8 while 3 and 9 are page down and page
- up respectively.
-
- • GETfile and PUTfile on the MS-DOS emulator are difficult to use if
- you only have a single drive. However, if you configure a RAM disc with
- MS-DOS you can then copy MS-DOS files onto it and then form the ADFS
- files on the physical drive and vice versa to take ADFS files in to the
- MS-DOS file system.
- 1.7
- • Programs that work under the PC-emulator. I’ve had lots of informa
- tion about MS-DOS software that does work, but has anyone found any
- software that does NOT work under the PC-emulator?
- 1.7
- • With version 1.09 of the PC emulator, if you do the followingÉ
- 1.7
- *LOAD PC.Emulate 10000
- 1.7
- ?&137C8=0
- 1.7
- *SAVE PC.Emulate2 10000
- 1.7
- you will find that the memory isn’t cleared when you press the reset
- button.
- 1.7
- • One good book to help new MS-DOS’ers (sorry!) is “Quick Reference
- Guide to MS-DOS” by Van Wolverton, published by Microsoft Press,
- obtainable via Watford Electronics at £3.95. (ISBN 1-55615-025-3)
- 1.7
- • From various reports, it seems that CHKDSK does work properly though
- it has to be used with care. It can be used to repair the File Allo
- cation Table (FAT) and repair errors in directories. Files are not
- necessarily stored contiguously on an MS-DOS disc, so if part of a file
- is lost then CHKDSK can be used to convert lost chains to files (i.e.
- write to a disc directory). Generally, CHKDSK by itself is safe. CHKDSK
- *.* /V is usually safe, but CHKDSK *.* /F is dangerous if you don’t know
- what you are doing!
- 1.7
- • One reader says he has solved the problem of “To linefeed or not to
- linefeedÉ” by adding a single pole switch in parallel with the contact
- on the printer dip-switch that sets the auto-linefeed on and off,
- leaving the dip-switch in the open position, of course. Don’t forget
- though that most printers only look at the dip-switch settings at power-
- up, though some do so when you do a software reset with 27,64.
- 1.7
- • With Arc-Writer, to get it not to double space on a Panasonic
- printer, use the AW_PCedit program, select the RX80D and change the
- number of steps per 100 units vertically from 21600 to 600.
- 1.7
- • View 3 works under the emulator if you poke locations A8A1, A8A2 and
- A8A3 with &EA.
- 1.7
- • Acornsoft ISO Pascal, Comal, Prolog and LISP all work under the
- emulator says one reader.
- 1.7
- • Share Analyser (Synergy Software) works perfectly under the 6502
- emulator.
- 1.7
- • Four floppies on 1.2 OS. If you try *con. floppies 4, you will find
- that it tells you the number is too big, but if you use *FX162,135,4 and
- do a <ctrl-break>, you will finds that *STATUS tells you that you have
- four floppies.
- 1.7
- • Booting other drives. In contrast with the BBC micros, you can, on
- Archimedes, *MOUNT 1 and then <shift-break> to boot the disc in drive 1.
- 1.7
- • WIMP Manager. Be aware that the first time Wimp_poll is called, it
- clears the screen.
- 1.7
- • Fitting the backplane: It is an awkward job to fit the backplane
- because two plastic spacers are used into which self-tapping screws have
- to be inserted. This is best done in a vice to avoid stripping screw
- heads and/or sticking screwdrivers through your fingers!
- 1.7
- • ‘Unknown IRQ at &00000000’. If you get this error message (and
- possibly find that the machine hangs up on you) check whether your RS423
- lead is properly screened, if at all. If it is not screened, it seems to
- be able to pick up interference (remember the micro-wave problems
- mentioned in issue 5, page 8?) and this generates spurious interrupts.
- 1.7
- • More ideas on the black art of RS423 communication! Here is one
- reader’s recipe for succesful RS423 transfer, though it may not work for
- everyoneÉ Try using the ‘fix’ module (Archive 1.6 program disc) with
- pins 1,4,8 and 9 linked together and 6 (DSR) and 7 (RTS) as the control
- lines.
- 1.7
- • Running more than one BASIC program. If you have a BASIC program you
- want to run while you are working on another program in memory, you can
- program a couple of keys with:
- 1.7
- *KEY 4 P%=PAGE : PAGE=&30000
- 1.7
- : CHAIN “testprog”|M
- 1.7
- *KEY 5 PAGE=P% : OLD|M
- 1.7
- • System Delta Plus: If you have trouble loading newly formed
- databases and get “No Room” when you know there is plenty of room, add a
- .D to the filename when loading, i.e. type in the filename as, say,
- “RECORDS.D”.
- 1.7
- • Inter-Word: If you have come from the desktop, you will find that
- the tab key does not work. This can be corrected with *FX219,9.
- 1.7
- If you want the £ sign, you will find it is produced by the ` key (far
- top left key).
- 1.7
- If you want the ` signÉ tough! (The £ sign duplicates the “insert ruler”
- function!)
- 1.7
- • Stuck in a black hole? If you find yourself typing in black on
- black, try typing MODE MODE<return>. It allows you to type again, but
- maintains the mode you were in.
- 1.7
- • SystemDevs module. The redirection commands, some of which we said
- didn’t seem to work, are sensitive to spacing. The correct forms are as
- follows where the spaces are represented by bullets (•):
- 1.7
- *CAT•{•>•info• }
- 1.7
- Spools catalogue to file “info”
- 1.7
- *CAT•{•>>•info• }
- 1.7
- Adds catalogue to file “info”
- 1.7
- *BASIC•{•<•data• }•PROG
- 1.7
- Runs “PROG” and uses information in file “data” for input.
- 1.7
- • Using the Acorn ROM Podule: No links are available for the RAM
- sockets, although you can configure the sockets by software for 8k, 32k
- or 128k RAM chips. Using HM6264LP-15 ram in the sockets and configuring
- them as 8k does not immediately work. However if you configure them as
- 32k chip and apply an offset of &2000 when loading i.e.:
- 1.7
- *RMLoad <podule number>
- 1.7
- <socket> <filename> 2000
- 1.7
- then your data will load correctly. This is because the Chip Select (CS)
- on the 8k chips is on the pin Address 13 (pin 26) on the 32k and 128k.
- This causes the 8k chip to be mapped into 8-16k and 24-32k hence the
- offset of 8k. The inverted CS on pin 20 is common to all three devices.
- (Without configuring them as 32k, the operating system reports that the
- device is not big enough for an 8k offset.)
- 1.7
- • Concerning Acornsoft C and TWIN: ‘Concurrency’ (keeping text in one
- window and compiling a program in the other) does not work. The compiler
- (v1.5A) has a bug in it that prevents it from working. Acorn said that
- it used to work OK on the pre-release version! However, compiler output
- can be sent to a file called tmp.temp if the -spool option is used.
- 1.7
- It may be necessary to relocate TWIN in order to compile programs. My
- version of TWIN loaded at &60000 but needed to be relocated to &80000 to
- allow the compiler enough space. (See below.) If the compiler crashes,
- try increasing the SystemSize using *configure.
- 1.7
- The two compiler messages, ‘Fatal I/O error’ and ‘Binary output error’,
- simply mean that your disc is full!
- 1.7
- • More about TWIN. Twin is an editor which seems to have one or two
- hidden features; firstly it is a relocatable program, and consequently
- can be loaded anywhere where RAM exists (barring overwriting OS
- workspace etc.). I have created a version which I call LoTwin which
- loads at &10000; this leaves space for BASIC programs only 256 bytes
- fewer than are available on a BBC Master using Shadow RAM, and yet it
- allows me considerably more work space than the standard Twin.
- 1.7
- To create a version of Twin called ‘MYTWIN’ which loads and runs other
- than at the ‘normal’ address, perform the following actions:
- 1.7
- *DIR <dir’ry_containing _Twin>
- 1.7
- *LOAD TWIN <new_load_address>
- 1.7
- *EX
- 1.7
- *SAVE MYTWIN <new_load_
- 1.7
- address> +<size>
- 1.7
- <size> is obtained from the 3rd column of hex data after the ‘*EX’.
- 1.7
- Then, to invoke the new version, type
- 1.7
- *MYTWIN
- 1.7
- and it will run. Pressing <shift-f5> followed by <T> after entering
- MYTWIN will show the load address on the top line immediately to the
- left of the time.I have yet to see mentioned in print the ‘warm start’
- for TWIN. If something nasty happens and your Archimedes locks up just
- as you have spent a couple of hours typing in something using TWIN, and
- you have no option but to press <ctrl-break>, or even <ctrl-reset>, do
- not despair, simply type:
- 1.7
- *GO <twin_start_address> -WARM
- 1.7
- and you will find yourself back in TWIN exactly as you were when the
- ‘nasty’ happened, barring any corruption caused by the ‘nasty’. Don’t
- forget the ‘-’ preceding the “WARM’! I have found myself in this
- position after a momentary power cut, and although the warm start did
- not restore TWIN as a fully functional editor (due to corruption), it
- restored Twin’s ability to save text, so I saved what I had done, and
- was then able to reload Twin, and then reload my text.
- 1.7
- • Iso Pascal: Be warned before you buy Iso Pascal, it has NO support
- for Arthur − otherwise, says one reader, it is an excellent implementa
- tion. Also (in common with C) it comes with a very thin manual, so a
- copy of TWIN and a book about the language (see the mini-review on page
- 25) will be needed for most people.
- 1.7
- (More information about other languages was sent in, but this was all I
- could digest with my limited knowledge of languages other than BASIC.
- Would anyone be prepared to receive all the “other languages” informa
- tion and knock it up into a special section each month?)
- 1.7
- Using the Computer Concepts ROM Podule
- 1.7
- How many times have you had to press <ctrl-break> and muttered under
- your breath because you’ve lost your function key definitions? That need
- never happen again if you have Computer Concepts’s ROM podule with some
- battery-backed RAM on it. All you do is configure the system to start up
- in the RFS instead of the ADFS and also configure it to auto-boot. Then
- in the RFS, you put a boot file something like:
- 1.7
- REM > RFS:!BOOT
- 1.7
- *SET Run$Path ,ADFS:$.,RFS:$.%.
- 1.7
- *ADFS
- 1.7
- *FX255,8
- 1.7
- PRINT “Acorn ADFS”‘
- 1.7
- *KEY 0 These are
- 1.7
- *KEY 1 my favourite
- 1.7
- *KEY 2 key definitions
- 1.7
- *SET ALIAS$> Cat
- 1.7
- *SET ALIAS$? HELP etc
- 1.7
- *BASIC
- 1.7
- (You will notice that the Run$Path uses ‘$’ instead of ‘%’ as stated on
- page 28 of the Computer Concepts manual.)
- 1.7
- • To get the Inter series software to boot up with a simple call such
- as *ISHEET, copy 65Arthur into the RAM area using *COPY
- ADFS:Modules.65Arthur RFS:65Arthur and, providing you have set up the
- Run$Path as above, *ISHEET, *IWORD and *ICHART will automatically load
- the emulator and then the appropriate software.
- 1.7
- • Installing Wordwise Plus. If you copy the Archimedes version of
- Wordwise Plus from Computer Concepts’s disc (filename “WW+”) into the
- RFS calling it, say, WWIMAGE, you can modify the BASIC program “ISHEET”
- and save it as “WW+” so that, as above, you can just type *WW+ and it
- will auto-load the emulator and run the software. The modifications are
- to change the references to “ISIMAGE” at lines 130 and 270 into
- “WWIMAGE”.
- 1.7
- • If you want to modify any of the programs in a ROM, all you do is
- either LOAD it, edit it and SAVE it or, if you have the modified version
- on disc, just *COPY it. If you tell it to SAVE a file with a name that
- exists in ROM it gives the ram version precedence over the ROM version.
- 1.7
- To find out whether a particular file is in ROM or RAM, use the *INFO
- <filename> command. If it comes up with a “*” before the final figure of
- the information, the file is in the RAM area. To get the ROM version
- back, you either have to do a <ctrl-break> or type *RMREINIT RFS
- <return> because *delete filename removes all trace of it so that even
- the ROM version is inaccessible.
- 1.7
- Thanks to Adrian Look for all the following hints and tips.
- 1.7
- • X-SWI’s. When using SWI’s if you put an X before the name then the
- SYS call from BASIC will not generate an error. For example:
- 1.7
- SYS “XOS_CLI”,block
- 1.7
- • Modes & drawing speed. The VIDC receives the video data down the
- data bus lines of the ARM processor. While this is happening the RISC
- chip cannot perform any processing. This means that the screen modes
- using higher memory will be slower. Try timing a FOR-NEXT loop of
- 1,000,000! So, if speed is of the essence, it may be better to go into
- mode 0, do the calculations and save them in an array and then go into
- mode whatever to plot the results.
- 1.7
- However, there is a compensating factor. The lower memory modes use one
- byte to represent several pixels, thus addressing pixels requires extra
- calculation − whereas the higher memory modes use only one byte to
- represent a pixel so addressing pixels is much quicker. This means that
- graphics will be quicker in higher modes.
- 1.7
- Mode F/N loop Draw Mem. Colours
- 1.7
- (secs) (secs) (k)
- 1.7
- 0 14.9 51 20 2
- 1.7
- 1 14.9 38 20 4
- 1.7
- 2 15.6 34 40 16
- 1.7
- 3 15.6 − 40 Text
- 1.7
- 4 14.9 38 20 2
- 1.7
- 5 14.9 32 20 4
- 1.7
- 6 14.9 − 20 Text
- 1.7
- 7 15.6 − 80 T-Text
- 1.7
- 8 15.6 54 40 4
- 1.7
- 9 15.6 40 40 16
- 1.7
- 10 17.1 39 80 256
- 1.7
- 11 15.6 − 40 Text
- 1.7
- 12 17.1 61 80 16
- 1.7
- 13 17.1 45 80 256
- 1.7
- 14 17.1 − 80 Text
- 1.7
- 15 21.3 79 160 256
- 1.7
- 16 19.6 − 132 Text
- 1.7
- 17 19.5 − 132 Text
- 1.7
- 18 15.4 70 40 2
- 1.7
- 19 16.9 77 80 4
- 1.7
- 20 21.0 98 160 16
- 1.7
- • OS_Pretty Print. Have you ever wondered how the operating system
- manages to display all its messages without any of the words getting
- split at the end of a screen line, no matter what mode it is in? Well,
- the answer is ‘OS_ PrettyPrint’.
- 1.7
- If you print all your strings using this call it will stop any words
- going over the end-of-line boundary. This call recognises the following
- control characters in a special way:
- 1.7
- − CR (CHR$(13)) causes not just a carriage return but also a newline.
- 1.7
- − TAB (CHR$(9)) causes a tabulation to the next multiple of eight
- columns.
- 1.7
- − CHR$(31) is a ‘pad character’, that is, the procedure will print a
- space when this code occurs but it will not break the string up at this
- point.
- 1.7
- Example:
- 1.7
- A$=“Hello my name is...”
- 1.7
- SYS “OS_PrettyPrint”,A$
- 1.7
- • The QUICK option When you use the (Q)uick option in the *COPY and
- *BACKUP commands, the OS will use all available memory. This means that
- if you are in high memory screen modes then you will have less memory to
- use. So if you want even quicker *COPYing or *BACKUPs then try it in a
- mode which uses less memory.
- 1.7
- • Run$Path and File$Path. The FileSwitch uses two system variables
- called Run$Path and File$Path. You can see their values by typing
- either:
- 1.7
- *SHOW File$Path <return> and/or
- 1.7
- *SHOW Run$Path <return>
- 1.7
- You will probably get the following results:
- 1.7
- File$Path : type String, value :
- 1.7
- Run$Path : type String, value : ,%.
- 1.7
- These are the default settings. The values stored in the File$Path and
- Run$Path variables are actually a list of directory filenames separated
- by commas and terminated with dots.
- 1.7
- When the FileSwitch is told to read a file it will look at File$Path
- variable and search for the file in each of the directories listed until
- it finds a match. Similarly the FileSwitch will do the same when it is
- told to execute a file, only it will use the Run$Path variable as the
- list of directories. For example:
- 1.7
- *SET File$Path RFS:%.,,%.
- 1.7
- This would cause the FileSwitch to search for the file first in the RFS
- filing system’s library directory, then in the current filing system’s
- current directory (hence the “,,” which means don’t add anything to the
- filename as entered), and finally in the current filing system’s library
- directory.
- 1.7
- Here is a list of all the possible directory prefixes (although you can
- actually specify any directory by name − wildcards may be used):
- 1.7
- * − all
- 1.7
- $ − root
- 1.7
- & − user
- 1.7
- @ − current
- 1.7
- ^ − parent
- 1.7
- % − library
- 1.7
- } − previous
- 1.7
- • Flushing the Mouse. You may have noticed that the mouse has a buffer
- of its own. This means that the Arc stores all the mouse movements and
- clicks just as it stores the keyboard entries. How many of you play
- around with the mouse when a program is ‘thinking’ or waiting for a
- screen to load? This will leave a whole load of mouse positions and
- clicks in the buffer, so any subsequent MOUSE X,Y,B readings will not
- reflect the true position of the mouse but the positions stored in the
- buffer!!! So how do you clear the buffer? To flush all the buffers,
- type:
- 1.7
- *FX 15 <return>
- 1.7
- to flush just the mouse buffer, type:
- 1.7
- *FX 21,9 <return>
- 1.7
- • Local DATA statements. (Based on an idea sent in by C.R.Fitch) In
- answer to the query last month, it is possible to have DATA statements
- in a program that does not rely on line numbers. What you can do is to
- use the error handler to pin-point a line number just before the local
- data statements. For every data set you want to access, just use the
- following format:
- 1.7
- DEFPROCdata_set
- 1.7
- LOCAL ERROR
- 1.7
- ON ERROR LOCAL RESTORE ERL
- 1.7
- IF ERL=0 THEN ERROR 1,“get line
- 1.7
- number“
- 1.7
- RESTORE ERROR
- 1.7
- DATA 1,2,3,4,5 : REM put your
- 1.7
- own data here
- 1.7
- ENDPROC
- 1.7
- Then if you want to use the data set, just call the procedure, as for
- example:
- 1.7
- PROCdata_set
- 1.7
- FOR i=1 TO 5
- 1.7
- READ data:PRINT data
- 1.7
- NEXT i
- 1.7
- The procedure leaves everything exactly as it was (except the data
- pointer) so it does not affect the program at all. The only snag is that
- we don’t know where the old data pointer was so we can’t continue
- reading data from where we left off! Any ideas??
- 1.7
- (The remaining information in this section is about using the MS-DOS
- emulator. More information than this was sent in, but this was all I
- could digest with my limited knowledge of MS-DOS. Would anyone be
- prepared to receive all such information and knock it up into a special
- MS-DOS section each month?)
- 1.7
-
- • Colour TV output for Archimedes? If you haven’t got a colour monitor
- and want to use a TV to look at the output from the Archimedes in
- colour, you can feed the signal from the video output into the ‘video
- in’ on a video recorder (always assuming you’ve got one!) and connect
- the ‘RF out’ from the recorder to the TV.
- 1.08
- • Drive lights on external 5.25“ drives. One reader suggested that to
- avoid the external drive light coming on when I accessed the interal
- drive(s) I should remove all links except DS1 (I use DS2 to make it
- drive2), TO, RR and MS. I followed his advice and it seems to be OK
- now.
- 1.08
- • 400 or 300? If a piece of software wants to find out if it is running
- in a 300 series machine or a 400 series it can read the MEMC to find the
- size of page being used, thus:
- 1.08
- program segment missing
- 1.08
- • More buzzing. One reader noticed that the buzzing from the speaker
- gets worse when you upgrade from a 305 to a 310. Other readers have
- found that the buzz gets to an intolerable level with certain software
- such as ArcWriter. In any case, this is now recognised by Acorn as a
- field change, so your local dealer should be able to sort it out for
- you. If your local dealer is not within easy reach then the “capacitor
- fix” mentioned in issue 3, page 7, is easy enough to do as long as you
- are reasonably competent at soldering.
- 1.08
-
- 1.08
- • Printer Acknowledge Line. The IOC (Input Output Controller) has a
- printer acknowledge line which can be read from the ARM supervisor mode.
- However, it is not advisable to ‘play around’ in this area, unless you
- know what you are doing, because some locations are read only and
- attempting to write to them could damage your IOC chip. Here is an
- example program that reads the printer acknowledge line.
- 1.08
- program segment missing
- 1.08
- • *TypeFile Command. One reader tried to define an alias which types
- out a file on the printer and then switches the printer off again, but
- he found that it was easier said than done. I set Adrian Look onto it
- and he has managed to find a way of doing it (albeit rather tortuous!):
- 1.08
- program segment missing
- 1.08
- then to print out the file, you do a *TypeFile<filename>. The <60> and
- <62> are the ASCII codes for “<‘ and “>”.
- 1.08
- It sounds a bit long-winded, but what you are trying to do is generate
- ASCII codes <2> and <3> to switch the printer on and off again. When
- you do a *SHOW, it gives the definition of TypeFile as ECHO |<2>|M TYPE
- %0|M ECHO |<3>|M.
- 1.08
- • “What’s the time, Arthur??” − If you wanted to change the prompt
- which Arthur gives, you could try, for example:
- 1.08
- *Set CLI$PROMPT >>>
- 1.08
- and you would get a question mark instead of the star prompt. Then, if
- you want Arthur to tell you time at each prompt, use:
- 1.08
- *SETMACRO CLI$PROMPT <SYS$TIME>*
- 1.08
- This prints out the time and then prints the star prompt. The reason
- you use SETMACRO rather than just SET is that it needs to be a variable
- which is up-dated each time the command is used. If you don’t like the
- seconds figure to be included, try:
- 1.08
- <SYS$TIME><127><127><127>*
- 1.08
- This prints out the time but then generates three delete characters
- which remove the seconds figures and the colon.
-
- • View B3.0. Following on from the hint about View B3.0, John Phelan
- writes th• “More articles about the basics, please”, said a number of
- folk at the Micro User Show. WeÕve had something on using ADFS and are
- starting assembler for beginners but can anyone say specifically what
- they want information on and can anyone offer to write any “basic”
- articles, please? In particularÉ
- 1.09
- • Article on ARMBE. We really do need someone to write a very
- practical guide to using the ARM BASIC Editor. For example, IÕve only
- just realised that <insert> toggles between insert and over-write mode
- and so you donÕt have to go through the preferences menu. I suspect a
- lot of people are not using ARMBE simply because they are familiar with
- BASICÕs own line editor and havenÕt got time to learn ARMBE even though
- it would save them time in the long run. Please write to us if you would
- like to have a go at this. Thanks.
- 1.09
- • BASIC V utility library. If you have worked out some neat utilities
- like the one in Hints & Tips about aligning decimal points, why not send
- them in to us. Clifford Hoggarth has offered to edit the section, so
- either send your contributions to us or direct to him at 20 Pinfold
- Drive, Eccleston Mere, St Helens, WA10 5BT.
- 1.09
- • Education articles. IÕm getting requests for articles relevant to
- education, but no-one is offering such articles. Can anyone help?!
- 1.09
- • Hard Disc users. One reader, who has a 440 on order, wants to know
- if there are any doÕs and donÕtÕs with a hard disc. Are there any hard-
- disc users who want to comment?
- 1.09
- • View B3.0. Following on from the hint about View B3.0, John Phelan
- writes that there is still a problem with the pound key. On the
- Archimedes, this key returns ASCII 163. Is this redefinable?
- 1.09
- • Calculating ¹ and e. Brian Cowan asks if anyone knows the way that
- pi and/or e may be calculated digit by digit on a computer. Presum-ably
- they must be all integer algorithms(?)
- 1.09
- • Taxan KP-810 on ArcWriter. Has anyone worked out how to get a
- printer driver working for this combination? Drop a line to E. Clinks
- cales, 68 Wyvis Drive, Nairn, IV12 4TP.
- 1.09
- • Video-titling. Is there any software, says M Davies of Cardigan, for
- video-titling? Wild Vision do the hardware for Genlock and Video
- Overlay, but where is the software?
- 1.09
- Also, he asks, is there any software, preferably ROM based, to give NLQ
- print on his Epson RX80 and also desktop publishing?
- 1.09
- Help Answers
- 1.09
- • Label printer for cassette tapesÉ Try the June issue of Micro User,
- page 39.
- 1.09
-
- 1.09
- • View B3.0. In order to get View B3.0 working properly under the 6502
- emulator, as well as poking the three bytes at &A8A1 to &EA you have to
- poke &80C2 — 4 to &EA otherwise, the emulator tries to run it as a
- second processor ROM image — without any success. With this patch, the
- address space from &B328 to &BFFF is effectively free for patching.
- Perhaps some enterprising programmer could use this space for extra
- routines — e.g. a resident printer-driver.
- 1.09
- • Special characters. If you want to generate special characters on-
- screen, try pressing <ctrl-shift-alt> and then one of the ordinary keys
- and you will find that you can get all sorts of alternative characters
- such as © and ¨ and the half, quarter and three-quarter signs (which I
- havenÕt even got on the Apple Mac!). What is more, if you are using Arc-
- Writer, it will actually print some of the symbols, such as the
- fractions, on the printer!
- 1.09
- • PSU for external 5.25“ drives. If you have an external 5.25” disc
- drive that does not have its own power supply, you can take the power
- from the power supply for the hard disc but you will need a special
- cable and connector. Those who have bought interfaces from Dudley Micro
- Supplies might be able to get help from them. (Or try the ArcDFS
- interface mentioned in Hardware & Software Available section.)
- 1.09
- • Aligning decimal points. If you are trying to print out various
- figures and want the decimal points to line up above one another, you
- can use the “fixed format”. (See the explanation of the @% variable
- under the section in the User Guide about the PRINT command.) However,
- the fixed format prints out trailing zeros, e.g. it prints 234.0000
- instead of 234.
- 1.09
- The bad news: One reader wanted to avoid this and so was trying to write
- a BASIC routine to do the aligning and discovered some nasties (presum
- ably due to rounding errors) that gave the value of LOG100 as 2 but
- INT(LOG100) as 1! Also he found that LEN(STR$3.3) was given as 3, but
- LEN(STR$4.3) was given as 11!
- 1.09
- The good news: You can do a STR$, use INSTR to find the position of the
- decimal point and then use PRINT TAB( to position it correctly as in the
- following example. (Thanks, APL!)
- 1.09
- 10 REM >$.AlignDP
- 1.09
- 20
- 1.09
- 30 REM ***************************
- 1.09
- 40 REM * Aligning your decimals *
- 1.09
- 50 REM * by Adrian Philip Look *
- 1.09
- 60 REM * 28th April 1988 *
- 1.09
- 70 REM ***************************
- 1.09
- 80
- 1.09
- 90 REPEAT
- 1.09
- 100 random=RND(10000)-RND(1)*(RND
- 1.09
- (1)<.7)
- 1.09
- 110 PROCalign(20,random)
- 1.09
- 120 UNTIL FALSE
- 1.09
- 130 END
- 1.09
- 140
- 1.09
- 150 DEFPROCalign(x,number)
- 1.09
- :REM x = position of DP
- 1.09
- 160 number$=STR$(number)
- 1.09
- 170 dot=INSTR(number$,“.”)
- 1.09
- 180 IF dot=0 dot=LEN(number$)+1
- 1.09
- :REM i.e. no DP
- 1.09
- 190 IF dot=1 dot=0:REM leads with DP
- 1.09
- 200 PRINT TAB(x-dot);number
- 1.09
- :REM beware of (x-dot)<0
- 1.09
- 210 ENDPROC
- 1.09
- STOP PRESS. The original enquirer about this, Peter Trigg, has just come
- back with:
- 1.09
- DEFPROCalign(x%,number)
- 1.09
- :REM x% = position of DP
- 1.09
- LOCAL length%
- 1.09
- length%=LEN(STR$(INT(number)))
- 1.09
- PRINT TAB(x%-length%);number
- 1.09
- ENDPROC
- 1.09
- This is somewhat neater and it seems to work OK. (This just emphasises
- the need for sharing ideas — which is why we are setting up our “BASIC
- utilities” section — see Help!!! section.)
- 1.09
- • Music Editor. If you have a number of tunes that were prepared using
- the Music Editor on the 0.2 or 0.3 Welcome discs. You will probably find
- that all the voices are wrong — usually that the main tune was being
- played on the percussion! The reason is that the Music Editor refers to
- the voices by number only, so if the modules are in a different order,
- the voices are likewise in a different order. It is however possible to
- change the order of the modules by *RMKILLing the one which is higher in
- the *ROMMODULES list then doing a *RMTIDY and then *RMREINITing the
- module which you had just killed.
- 1.09
- • Beware &36D! Some BBC software (Apollo Mission for example) pokes
- !877=0 (or !&36D=0). If you transfer this to the Archimedes you will
- find that the system locks up and neither <ctrl-break> nor <reset> has
- any effect. Even switching off is ineffective. The only way out is an
- <R>-power-up. (Do it twice to restore the correct monitor-type setting.)
- 1.09
- • File copying on a single drive. Are you having difficulty copying
- files from one disk to another using just one disk drive? Is it that
- when using the *COPY command with the Prompt option, the system prompts
- for insertion of the destination disk but never recognises it? If so,
- issue the command *NODIR first. The system will then read the disk
- directory every time it attempts to access a disk rather than storing
- the directory in memory so that disks no longer need *MOUNTing. It is
- possible to make the change permanent by doing *Configure NODIR.
- 1.09
- • Boot files that work from desktop or with <shift-break> — set *OPT
- 4,2 (Run) and create a BASIC program called !BOOT. You can then <shift-
- break> if configured as language 3 or 4 (desktop or BASIC) or double
- click the !boot icon from desktop.
- 1.09
- If necessary the !BOOT file can contain a line such as: 10*EXEC !BOOT1
- 1.09
- !BOOT1 contains tasks such as loading modules that need to be done from
- supervisor mode.
- 1.09
- • To run Master software, use *Alphabet Master and *Keyboard Master.
- 1.09
- • *TypeFile again. After the ideas given last month, I knew there
- should be an easier wayÉ Clifford Hoggarth has come up with:
- 1.09
- *Alias$TypeFile Echo ||B|M Type %0|M Echo ||C|M
- 1.09
- The point is that on first interpretation, || is turned into | so that
- it become Echo |B which gives the ASCII 2 (ctrl-B) to turn on the
- printer and Echo |C to do the reverse.
- 1.09
- • System Delta Plus — The section in the manual on printer control
- codes is not very clear. The following points may make it clearer: (1)
- Clicking on <menu> on the printer control icon brings up a sub-menu
- giving options for Bold, Compressed or Reset. (2) To select multiple
- escape sequences, click <select> on the printer control icon, select the
- Escape icon and enter the first code in the sequence, then press
- <return>, enter the second code and again press <return>. Repeat this if
- necessary and click on the OK icon when you have finished. E.g. to get
- NLQ on an Epson , you want ESC120,1. So use: <select> Escape icon, type
- 120, press <return>, type 1, press <return>, <select> OK icon.
- 1.09
- One limitation of the System Delta Plus package, as it stands, is that
- you can only create four numeric total fields when producing a “List”.
- The solution, according to Minerva Systems will be to purchase their
- “Reporter” software — when it becomes available!
- 1.09
- • Taxan Kaga printer (or the Canon equiv-alent) — there is a fairly
- simple way of being able to switch the auto-line feed on and off, to
- avoid problems with software that may or may not require the printer to
- auto-line feed.
- 1.09
- All you do is to place a switch between two pins of the printer
- connector. The pins to connect are pin 14 (auto-line feed) and any GND
- line. When they are connected an auto-line is not performed.
- 1.09
- • Ambiguous *-commands. If you have two modules loaded into the
- Archimedes that use the same *-command name, you can call the command
- required by: *<module name>: <command> <....> So, for example, if you
- had two modules, ÔUtilityÕ and ÔToolkitÕ both of which have a CATALL
- command, you can use either *Utility:CATALL or *Toolkit:CATALL to
- differentiate between them.
- 1.09
-
- • BASIC Editor. If you type “EDIT.” instead of just “EDIT”, it gets
- you back into the editor at the same place you left it. This can be very
- useful when editing long programs. It even seems to work if you load and
- save other programs in the interim as long as you get the original
- program back into memory. Also, you can say EDIT Fred and it will take
- you to the first occurrence of the word “Fred” in the file. So, with
- judicious use of REM statements, you can jump into the program at just
- the right place every time. If you want to find DEFPROCfred, EDIT fred
- will probably bring you to PROCfred rather than the definition itself,
- but REM !FRED above the top of the procedure would allow you to type
- EDIT !FRED (note, all uppercase, which is easier to type) to drop you
- straight to the desired place in the program.
- 1.10
- • Artisan — fast load and save. If you have typed in the Fastload/Save
- module from the March issue of Archive, *COPY FastRm onto the Artisan
- disk and then LOAD “ART3”, list line 270 and add *RMLOAD FastRm|M and
- then re-save it. Now LOAD “ART5” change line 2540 to OSCLI“FastLoad ”+f$
- and line 2620 to OSCLI”FastSave “+f$. Then re-save it. You now have a
- new and improved disc facility for Artisan.
- 1.10
- • 305, 310, 410 or 440? Following on from the hint in the May issue
- (page 7) itÕs all very well to know what the page size is, 8k or 32k,
- but to differentiate between a 305 and a 310 or between a 410 and a 440,
- you need to know how much memory is available. One way of doing this is
- to set up a local error trap and do a *Configure Spritesize 128. If the
- machine has 1 Mbyte or less it will generate a “Configure parameter too
- big” error. If it still generates an error when you use *Configure
- Spritesize 64 then the software knows it is running in a 305. We have
- not had chance to check this on a 305 or a 410, so please will someone
- let us know if it does not work.
- 1.10
- • System DeltaPlus. If you want to use two drives, issue the following
- two commands from the card index:
- 1.10
- *dir :1
- 1.10
- *set Delta$WPPrefix :0.$
- 1.10
- Then donÕt specify the drive number in the data file name.
- 1.10
- • View 3 & Viewstore 1.1. Various folk are still having problems with
- these. If so, try the following as suggested by Sean Kelly — thanks.
- 1.10
- Viewstore 1.1. Locations &ABE2, &ABE3 and &ABE4 should all be set to the
- value &EA.
- 1.10
- View 3. Set locations &A8D6, &A8D7 and &A8D8 to the value &EA. Also,
- there are four places where you get LDA#&82, JSR Osbyte (i.e. &A9, &82,
- &20, &F4, &FF). This is used to check for the second processor on the
- BBC. So to fool it, you have to change each of these to: LDX#&FF,
- LDY#&FF, NOP. You can either do this by poking &A2, &FF, &A0, &FF, &EA
- into each of the sets of locations: &8834 to &8838, &88D8 to &88DC,
- &895C to &8960 and &AF8D to &AF91. (I checked these locations against
- the B3.0 version in the Master 128Õs and it bore no resemblance to it.
- Apparently it refers to the A3.0 version. Ed.)
- 1.10
- • Improved sound. If you have the colour monitor that comes with the
- Archimedes, you can use the Audio Input at the back of the monitor (a
- phono socket) to take a signal from the Headphones output (3.5 mm stereo
- jack) from the Archimedes. Just use one of the channels or combine them
- with 100R resistors. (If youÕre not quite sure how to do this, weÕll try
- to give more details next month.) This give a much better sound and
- provides you with a volume control.
- 1.10
- Next two hints are from Peter KigginsÉ
- 1.10
- • When using a SWI from BASIC which either takes or returns a string,
- it is not necessary to use pointers to strings. The SYS command knows
- that a pointer has been returned by the SWI and copies the relevant text
- into the string. For example, instead of
- 1.10
- $TxtPtr%=Number$
- 1.10
- SYS“OS_ReadUnsigned”,FromBase%,TextPtr% TO ,,Decimal%
- 1.10
- you can use the more readable and easier
- 1.10
- SYS“OS_ReadUnsigned”,FromBase%,Number$ TO ,,Decimal%
- 1.10
- And to read the command line which started the program, all that’s
- required is
- 1.10
- SYS “OS_GetEnv” TO Command_line$
- 1.10
- • BASIC commands TWIN and TWINO can be used without Acorn’s (editor)
- TWIN. How? When TWIN is executed, BASIC first converts the current
- program from internal tokenised format to plain text format; then it
- calls TWIN with the location of the text as a command line string. So
- all that is required is a program called TWIN which reads the command
- line and saves the relevant chunk of memory:-
- 1.10
- 10 REM >twin
- 1.10
- 20 REM*** fails with very short pieces of text ***
- 1.10
- 30 SYS “OS_GetEnv” TO command_line$
- 1.10
- 40 posat%=INSTR(command_line$,“@”)
- 1.10
- 50 poscomma%=INSTR(command_line$,“,”,posat%)
- 1.10
- 60 possemic%=INSTR(command_line$,“;”,poscomma%)
- 1.10
- 70 start$=“&”+MID$(command_line$,posat%+1,poscomma%-(posat%+1))
- 1.10
- 80 finish$=“&”+MID$(command_line$,poscomma%+1,possemic%-(poscomma%+1))
- 1.10
- 90 INPUT“Enter file name: ” file$
- 1.10
- 100 OSCLI(“save ”+file$+“ ”+start$+“ ”+finish$)
- 1.10
- 110 OSCLI(“settype ”+file$+“ &FFF”)
- 1.10
- The point of all this is that the BASIC Editor can now be used to
- produce text files — for wordprocessing, compiling, etc.
- 1.10
- • Auto-Booting — some of the commercial auto-boot programs don’t take
- into account the filing system! This can be very annoying if you have a
- ROM podule and your system is set to start up in the RFS. The answer is
- (i) the software developers should produce proper auto-boot programs; or
- (ii) if you already have bought a program — put *CON.FILE.ADFS in auto-
- boot program!
- 1.10
- Hard Disc Auto-Booting — some readers are lucky enough to have hard
- discs. However, life with a hard disc is not all a bed of roses! Having
- copied your application programs to the hard disc, you run into problems
- with the auto-booting routines. Here is a one of many possible solu
- tions. Indeed this program could be used for those of us with floppies,
- who have more than one application on a disc.
- 1.10
- 10 REM >$.!BOOT
- 1.10
- 20 REM **************************
- 1.10
- 30 REM * Multiple Auto-Booting *
- 1.10
- 40 REM * written by Adrian Look *
- 1.10
- 50 REM * 22nd June 1988 *
- 1.10
- 60 REM **************************
- 1.10
- 70
- 1.10
- 80 SYS “OS_Byte”,161,16 TO ,,misc_flags
- 1.10
- 90 auto_boot=(misc_flags AND %10000)
- 1.10
- 100 file$=“boot”
- 1.10
- 110 file=OPENIN(file$):CLOSE #file
- 1.10
- 120 IF file=0 THEN PROCmenu
- 1.10
- 130 file=OPENIN(file$)
- 1.10
- 140 INPUT #file,boot$
- 1.10
- 150 CLOSE #file
- 1.10
- 160 IF auto_boot THEN OSCLI(“REMOVE ”+file$)
- 1.10
- 170 OSCLI(“RUN ”+file$)
- 1.10
- 180 END
- 1.10
- 190
- 1.10
- 200 DEFPROCmenu
- 1.10
- 210 REM **** your own code ****
- 1.10
- 220 REM
- 1.10
- 230 REM should exit with file$
- 1.10
- 240 REM containing the filename
- 1.10
- 250 REM of the program to be run.
- 1.10
- 260 REM
- 1.10
- 270 REM e.g. PRINT #file,filename$
- 1.10
- 280 ENDPROC
- 1.10
- The program checks whether a file (file$) is on the disk. If it is, then
- the program reads the filename contained in file$ and runs it! Other
- wise, the program should create file$ — as indicated.
- 1.10
- This method also allows you to write library programs which will: create
- file$ and then run the boot program. Thus by running these library files
- you can also initiate your application programs — without the need for a
- menu!
- 1.10
- • Quazer Fix. If you are using Quasar 1.40, here is a cheat, (for
- those who like such things!) which allows you to keep going a bit
- longer. Firstly, *LOAD QuazCode 9000 and then rename Quazcode as, say,
- OldCode. Now if you want to set the number of lives, you need to change
- location &3D058. It should currently contain 2, so to change the number
- of lives to, say 10, put ?&3D058=10. Now if you want to avoid being
- killed when you collide, change the contents of location &3D90B from &E2
- to &F2 by puting ?&3D90B=&F2. Finally, *SAVE QuazCode 9000 +36520.
- 1.10
- •Passwords if you want them. Quazer Passwords: 2 Lizards, 3 Spiders, 4
- Pedantic, 5 Analysis, 6 Larkin, 7 Company, 8 Manual,9 Trading
- 1.10
- Hoverbod passwords: 2 Minervas, 3 SirBarry, 4 ZotyBlob, 5 Flumpies, 6
- Squidgee, 7 Wobblies, 8 Posskett
- 1.10
-
- 1.10
- The following Hints & Tips were sent in by Mike Harrison (of Watford
- Digitiser fame). HeÕs also sent us various other bits of information
- which appear elsewhere in this issue and the next issue. Many thanks
- Mike.
- 1.10
- Writing modules
- 1.10
- (Ref. issue 5, page 45) SWIs in modules must always use the ‘X’ version
- of the SWI and, where appropriate, check for an error and exit,
- preserving the value of r0 returned by the SWI (i.e. don’t restore the
- old value of R0 if it had been saved). e.g.
- 1.10
- .a_module_routine
- 1.10
- STMFD R13!,{r0-2 ,14} \or however many registers you need to save
- 1.10
- SWI “XOS_SomethingOrOther”
- 1.10
- STRVS R0,[R13] \overwrite old r0 with error pointer
- 1.10
- LDMVSFD R13!,{r0-2 ,PC}
- 1.10
- \ the last 2 statements could alternatively have been :
- 1.10
- \
- 1.10
- \ ADDVS R13,R13,#4 : LDMVSFD R13!,{r1-2 ,PC}
- 1.10
- For short routines, or where several SWIs are used, the following is
- neater..
- 1.10
- .a_short_routine
- 1.10
- STMFD R13!,{r0-5 ,14}
- 1.10
- SWI “XOS_SomeSwi”
- 1.10
- SWIVC “XOS_SomethingElse”
- 1.10
- SWIVC “XOS_YetAnotherSwi”
- 1.10
- STRVS R0,[R13]
- 1.10
- LDMFD R13!,{r0-5 ,PC}
- 1.10
- In this example, all code after first SWI should be conditional on V
- clear, so if any SWI gives an error, the code will ‘drop through’ to the
- end.
- 1.10
- Remember that some SWIs may return errors you don’t expect — e.g.
- OS_WriteC could return an error when output is *Spooled, setting the
- screen mode could give ‘Bad Mode’ etc. — some thought is required to
- ensure that module code will be reliable in all environments.
- 1.10
- When setting up offsets in headers and command tables, it is much easier
- to specify them when using offset assembly (OPT 4/6/7) — set O% to the
- code buffer, and P% to 0. Offsets can then be included directly with
- EQUD (e.g. EQUD moduletitle). Warning — if you are still using Basic
- 1.00, there is a bug in ALIGN when using offset assembly. Version 1.02
- is OK.
- 1.10
- The following assembler macro is useful when building keyword tables in
- modules (it assumes the use of offset assembly, as described above):
- 1.10
- DEF FNcommand(I%,A$)
- 1.10
- [ OPTpass : EQUS A$ : EQUB0 :
- 1.10
- ALIGN
- 1.10
- EQUD EVAL(A$)
- 1.10
- EQUD I%
- 1.10
- EQUD EVAL(A$+“syntax”)
- 1.10
- EQUD EVAL(A$+“help”)
- 1.10
- ]:=pass
- 1.10
- OPT FNcommand(“NewCmd”,N) will create a table entry, using the labels
- .NewCmd .NewCmdhelp and .NewCmdsyntax (N is the information word).
- 1.10
- Note that ‘pass’ is the name of the pass variable — change this if you
- use a different name.
- 1.10
- Podule manager/Clock slowdown
- 1.10
- (Ref. issue 7, page 44) The problem here is that SWIs are passed to
- modules with interrupts disabled, so if the SWI takes a significant
- amount of time to complete, the clock will slow down (the mouse pointer
- will also become sluggish). I can’t see why the podule manager should
- need interrupts off, so it’s probably an unintended ‘feature’ — SWI code
- which takes time to execute SHOULD enable interrupts, unless they have
- to be off. (The digitiser module only runs with interrupts off when
- absolutely necessary!) When interrupts have been disabled for signifi
- cant amounts of time, the seconds count of the real-time clock gets out
- of step with the minutes, which then don’t roll over at 59 secs — this
- looks weird if you don’t know about it!
- 1.10
- System Devices
- 1.10
- (Ref. issue 6, page 41) There is a very interesting feature, which I
- haven’t seen documented, concerning device oriented filing systems. When
- you set the printer type using *FX5,n where n is greater than 2, the OS
- looks for a system variable called printertype$n — n being the value
- used for FX5. This variable holds the name of the output file or device
- to which printer output should be sent. The Econet module, NetPrint,
- uses this to set printer type 4 to “netprint:”. What happens is that
- when you do <ctrl-B>, a file is opened, with the name given in this
- system variable, and <ctrl-C> closes the file. While this would normally
- send output to a hardware device, it can also use the name of a normal
- file; e.g.
- 1.10
- *set printertype$5 outfile
- 1.10
- *fx5 5
- 1.10
- Will cause subsequent printer output to be written to the file “outfile”
- — handy for debugging, and for saving data to print on other machines.
- Note that this will only work if a program does VDU2, sends ALL its
- output, then does VDU3. If it keeps turning the printer on and off all
- the time with VDU2/3, only the last part of the output will be in the
- file, as VDU2 re-opens the file, discarding its previous contents.
- (Econet users know only too well the problems caused by software not
- handling the printer correctly!)
- 1.10
- Just for fun, try :
- 1.10
- *set printertype$5 vdu:
- 1.10
- *fx5 5
- 1.10
- <Ctrl-B>
- 1.10
- All vdu output will appear ttwwiiccee!! — once via the normal route, and
- again via the printer stream.
- 1.10
- Use of SYS
- 1.10
- (Ref. issue 9, page 47) The following is a bomb-proof version of OSCLI
- in BASIC, which will report errors without entering BASICs error handler
- (it can also be used for other SWIs — e.g. OS_File to trap filing errors
- neatly)
- 1.10
- DEFPROCoscli(OS$)
- 1.10
- LOCAL flag%,error%
- 1.10
- SYS“XOS_CLI”,OS$ TO error% ; flag%
- 1.10
- IF flag% AND 1 THEN P.“Error : ”;:SYS“OS_Write0”,error%+4
- 1.10
- REM the error number can be read using !error%
- 1.10
- ENDPROC
- 1.10
- It works by reading back the V flag and error pointer returned by the X
- version of the SWI
- 1.10
- TWIN
- 1.10
- (Ref. issue 7, page 7) You can warm start Twin using *Twin -warm, using
- the same version of Twin, of course — *GO may cause problems if the code
- has been corrupted, (or you’ve forgotten the address!). There is a bug
- in all the versions of Twin I’ve seen (I’m not sure what version has
- been released), which means that when exiting from TWIN to BASIC, the
- event vector is messed up, so if you overwrite the address where Twin
- was run, and enable events, the machine crashes. This can be avoided by
- doing QUIT, *BASIC, and OLD.
- 1.10
- In one issue, there was a tip for entering ARMBE automatically at the
- line in error — here’s a similar routine if you prefer using TWIN to
- edit BASIC programs — It uses the TWINO8 option to strip line numbers
- (which you don’t need to use, DO YOU!!). If the error wasn’t Escape,
- pressing <Y> will enter TWIN at the line where the error occurred. Note
- that it assumes lines are numbered in 10s — this will be the case if the
- program has been edited in TWIN without line numbers, but not if lines
- have been inserted/deleted from the BASIC prompt — in this case, enter
- TWIN, and exit again, or do RENUMBER.
- 1.10
- ON ERROR PROCERR
- 1.10
- ...
- 1.10
- ...
- 1.10
- DEFPROCERR
- 1.10
- REPORT:PRINT“ at line ”ERL
- 1.10
- IF ERR=17 END
- 1.10
- PRINT“EDIT ?”:IF GET$=“Y” ELSE END
- 1.10
- *FX138 0 129
- 1.10
- *FX138 0 128
- 1.10
- FORA%=1 TO LEN(STR$(ERL DIV10))
- 1.10
- SYS 6,138,,ASC(MID$(STR$(ERL DIV10),A%,1))
- 1.10
- NEXT:*FX138 0 13
- 1.10
- END
- 1.10
- Hidden software
- 1.10
- (Ref. issue 9, page 4) Take a close look at the digitiser module!
- 1.10
-
- Hints & Tips
- 1.11
- • *COMPACT − The User Guide says that *COMPACT “moves files around on
- the disc, collecting all the free space into a continuous block”.
- However, if you have a disc that has several gaps you will find that you
- need several compactions. One disc which had 5 gaps in the FS map had to
- be compacted eight times before the map showed only a single gap. (See
- review of R.A.Engineering’s Utilities, page ?????)
- 1.11
- • *COPY − When copying multiple files using wildcards, you must ONLY
- specify the directory into which to copy and not try to specify the
- actual file name in any way e.g. if you want to copy files PROGA, PROGB,
- PROGC etc from the “BASIC” directory into the “BACKUP” directory, use
- *COPY $.BASIC.PROG* $.BACKUP.* but if you try to use *COPY $.BASIC.PROG*
- $.BACKUP.PROG* it won’t work. This is not desperately clear in the User
- Guide and I’ve only just worked out why 90% of my attempts to do
- wildcard copies have not worked!
- 1.11
- • CAPS LOCK − Another thing which is obvious if you know about it is
- that you can set up the keyboard to print upper case normally but then
- go into lower case when you press <shift>. This can be done either by
- *Configure SHCAPS if you want it to start up in that mode (or CAPS or
- NOCAPS if you don’t) or by holding the shift key down and pressing and
- releasing the Caps Lock key.
- 1.11
- • CHAINing programs − In response to our complaint in last month’s Bug
- or Feature that programs chaining one another cannot be called from
- drive 1 using the desktop, Philip Colmer of Acorn’s Customer Support
- Department tells us that it is definitely a feature. There are a number
- of ways of avoiding the problem. Firstly, you could reference files by
- disc name, so we could CHAIN“:ProgDisc.$.Progs.Nextprog” or whatever.
- Alternatively, you could use the fact that when you run a BASIC program
- in drive 1 from the desktop, it generates a command something like
- *basic −quit “ADFS::1.$.Progs.FirstProg”. You could then use OS_GetEnv
- to read the command string and find out where the program has been
- called from. Thridly, have a look at PC.PC from the 1.20 version of the
- PC emulator to see an intelligent (incredibly so!) boot-up program which
- has been very carefully commented to enable you to modify it for your
- own use.
- 1.11
- • Auto-booting − Again from Philip Colmer comes the suggestion that
- you should use the PC.PC program to boot up applications from within
- directories on the hard disc. The program uses legal OS calls instead of
- re-configuring. It does a *DIR and then runs the program specified. The
- only restriction on it is that it cannot change the system sprite size
- but, he points out, if programs were written properly, they would not be
- using the system sprite area!
- 1.11
- • System Devices − You can treat devices as files, e.g.
- C%=OPENOUT(“NETPRINT:”). This is particularly useful in the example
- given on page 9 last month because you can now open a channel to the
- network printer, send some stuff to it when you are ready (using BPUT
- #C%) and when everything is done, close the ‘file’ (CLOSE#0) and it will
- then be printed! (This also came from Philip Colmer − Thanks PC! −
- Funny, you know, I always thought that PC stood for Personal Computer!
- Ed.)
- 1.11
- The following Hints were prepared by Adrian LookÉ
- 1.11
- • Smooth Scrolling − Using VDU 23,7 you can scroll the current text
- window up, down, left, or right. Horizontally, the picture can be
- scrolled by one byte, but vertically it can only be scrolled by one
- character cell. This can produce a smooth scroll by placing a WAIT (for
- the vertical sync pulse) command before the VDU 23,7. If any further
- delay is implemented then the picture shudders as it scrolls. This means
- that a slow smooth scroll cannot be used. The answer is to redefine the
- screen base address manually (as we used to do on the BBC). This is done
- using ‘OS_Word’ &16.
- 1.11
- DIM block% 4
- 1.11
- :
- 1.11
- block%?0=type
- 1.11
- block%!1=offset
- 1.11
- WAIT
- 1.11
- SYS “OS_Word”,&16,block%
- 1.11
- “type” : when 1 − base used by VDU drivers (i.e. screen updated)
- 1.11
- : when 2 − base used by hardware (i.e. screen displayed)
- 1.11
- “offset” : from the address of the base of the screen buffer to the
- start of the screen display.
- 1.11
- The following example program should help to make it clearer.
- 1.11
- 10 REM >scrolling
- 1.11
- 20
- 1.11
- 30 REM **************************
- 1.11
- 40 REM * Scrolling Screens?? *
- 1.11
- 50 REM * written by Adrian Look *
- 1.11
- 60 REM * 21st July 1988 *
- 1.11
- 70 REM **************************
- 1.11
- 80
- 1.11
- 90 MODE 0:OFF
- 1.11
- 100 DIM block% &10
- 1.11
- 110 count=0
- 1.11
- 120
- 1.11
- 130 PRINTTAB(3,15);“Some text”
- 1.11
- 140
- 1.11
- 150 REPEAT
- 1.11
- 160 PROCscroll(1)
- 1.11
- 170 UNTIL 0
- 1.11
- 180 END
- 1.11
- 190
- 1.11
- 200 DEFPROCscroll(speed)
- 1.11
- 210 PROCinfo
- 1.11
- 220 add=x/m
- 1.11
- 230 IF SGN(count)>0 THEN speed=-speed
- 1.11
- 240 REPEAT
- 1.11
- 250 block%?0=2
- 1.11
- 260 block%!1=add*count
- 1.11
- 270 WAIT
- 1.11
- 280 SYS “OS_Word”,22,block%
- 1.11
- 290 count+=speed
- 1.11
- 300 UNTIL add*count>x*y/m+4160 OR count<0
- 1.11
- 310 ENDPROC
- 1.11
- 320
- 1.11
- 330 DEFPROCinfo
- 1.11
- 340 SYS “OS_ReadModeVariable”,MODE,4 TO ,,x
- 1.11
- 350 x=4-x:x=8*(2^x)*10
- 1.11
- 360 SYS “OS_ReadModeVariable”,MODE,5 TO ,,y
- 1.11
- 370 y=3-y:y=y*256
- 1.11
- 380 SYS “OS_ReadModeVariable”,MODE,3 TO ,,c
- 1.11
- 390 CASE c OF
- 1.11
- 400 WHEN 1 : m=8
- 1.11
- 410 WHEN 3 : m=4
- 1.11
- 420 WHEN 15 : m=2
- 1.11
- 430 WHEN 63 : m=1
- 1.11
- 440 ENDCASE
- 1.11
- 450 ENDPROC
- 1.11
-
- 1.11
- • Desktop Utilities − The desktop is essentially a skeleton program
- which allows the programmer to install his/her own icons, windows,
- menus, commands, etc, which the DeskTop will then operate. This is done
- with a very clever set of FN’s. for example:
- 1.11
- PROCinstall(“adrian”)
- 1.11
- :
- 1.11
- DEFPROCinstall(file$)
- 1.11
- INSTALL file$
- 1.11
- void=EVAL(“FNinstall_file_”+file$)
- 1.11
- ENDPROC
- 1.11
- This means that by EVALuating a string the DeskTop can call any file-
- specific function. In the case above, FNinstall_file_adrian will be
- called. By using this system, any command can be ‘installed’ or even
- replaced. Explaining or even listing the functions and procedures
- available in the DeskTop program is not really possible in the magazine.
- However, bearing in mind the methods used, you will find before long you
- can write some very useful tools for the DeskTop. It should even
- possible to completely re-write the it! As an example, here is a program
- which will allow you to use star commands. Don’t forget to *SETTYPE
- ‘filename’ FE0 to indicate that the program is a desktop utility (We
- have included several other utilities on the program disk).
- 1.11
- 10 REM >star
- 1.11
- 20
- 1.11
- 30 REM *******************************
- 1.11
- 40 REM * Star Commands for Desk Top *
- 1.11
- 50 REM * written by Adrian Look *
- 1.11
- 60 REM * original idea Denis Howlett *
- 1.11
- 70 REM *******************************
- 1.11
- 80
- 1.11
- 90 DEFFNinstall_file_star
- 1.11
- 100 file=OPENIN(filehandler_path$+“.istar”):CLOSE #file
- 1.11
- 110 IF file=0 THEN ERROR 1,“Can’t find icon file ‘istar’”
- 1.11
- 120 OSCLI(“SMERGE ”+filehandler_path$+“.istar”)
- 1.11
- 130
- PROCsys_addtoiconbar(“star”,“command”,&301A,icon_fgcol,icon_bgcol,48)
- 1.11
- 140 SYS “Wimp_ForceRedraw”,-1,0,0,1279,100
- 1.11
- 150 =0
- 1.11
- 160
- 1.11
- 170 DEFFNaction_star
- 1.11
- 180 PROCstar_command(5,5,75,25,2,1)
- 1.11
- 190 =0
- 1.11
- 200
- 1.11
- 210 DEFPROCstar_command(x0,y0,x1,y1,bx,by)
- 1.11
- 220 *POINTER 0
- 1.11
- 230 VDU 26,4,28,x0,y1,x1,y0
- 1.11
- 240 y0=31-y0:y1=31-y1
- 1.11
- 250 gx=x0*16-bx*8:dx=(x1-x0)*16+bx*16+16
- 1.11
- 260 gy=y1*32-by*16:dy=(y0-y1)*32+by*32+32
- 1.11
- 270 GCOL 0,&4:RECTANGLE FILL gx-4,gy-4,dx+8,dy+8
- 1.11
- 280 GCOL 0,&0:RECTANGLE FILL gx,gy,dx,dy
- 1.11
- 290 LOCAL ERROR
- 1.11
- 300 REPEAT
- 1.11
- 310 ON ERROR LOCAL PRINT REPORT$
- 1.11
- 320 *FX 4,0
- 1.11
- 330 INPUT“*”star$
- 1.11
- 340 *FX 4,1
- 1.11
- 350 OSCLI(star$)
- 1.11
- 360 UNTIL star$=“”
- 1.11
- 370 RESTORE ERROR
- 1.11
- 380 SYS “Wimp_ForceRedraw”,-1,gx-4,gy-4,gx+dx+8,gy+dy+8
- 1.11
- 390 VDU 26,5
- 1.11
- 400 *FX 21,9
- 1.11
- 410 *POINTER
- 1.11
- 420 ENDPROC
- 1.11
- N.B. (i) You will need a STAR shaped icon called ‘command’, saved as
- ‘istar’. However, if you want to test the program before designing an
- icon, skip lines 100-120 and change “command” in line 130 to “unknown”.
- 1.11
- (ii) Because the DeskTop uses the filename of the utility as a ‘seed’,
- it important that the utility’s filename be consistent with its
- procedure names. For example: if you rename ‘star’ to ‘command’ then the
- DeskTop will look for FNaction_command instead of FNaction_star, so you
- will get an error!
- 1.11
- • Making the Print Key Save − Last month it was suggested in Neil
- Strong’s article about making the print key print that a slight
- modification of the program could make it save screen shots to the disc
- using SCREENSAVE “$.pic” instead of HARDCOPYFX. However, this limits you
- to one screen shot at a time (otherwise you will overwrite your last
- one). If we use the system variables and update the ‘print key’ program
- we can get it to save a screen called ‘$.scr0’, followed by, ‘$.scr1’,
- ‘$.scr2’..etc!
- 1.11
- 871 adr r0,command1
- 1.11
- 872 swi “OS_CLI”
- 1.11
- 920 equs “ScreenSave scr<file>” ; FastSave even!#?
- 1.11
- 941 .command1
- 1.11
- 942 equs “SetEval file file+1”
- 1.11
- 943 EQUB 0
- 1.11
- 944 ALIGN
- 1.11
- 1020 OSCLI(“SetEval file 0”)
- 1.11
- 1030 END
- 1.11
- If you wish to (re)set the ‘file count’ to n, then just type:
- 1.11
- *SETEVAL file n
- 1.11
- • SpellMaster Browse in Wordwise Plus − If you have Spell-Master and
- Wordwise Plus you can very easily write a two line segment program which
- will call the browse window. i.e.
- 1.11
- *BROWSE
- 1.11
- DISPLAY
- 1.11
- Thus if the program were in segment zero you could press <shift><print>
- while editing your text and check your spelling using the browse window.
- This obviously opens up all sorts of possibilities for Wordwise Plus to
- use Spell Master’s facilities.
- 1.11
-
- • PipeDream − For those who have not used View etc and who have
- therefore not had to fight printer drivers, the following may be useful:
- 1.12
- The printer driver is loaded on initialisation and when <Alt><P><D> is
- used, but NOT when a document is printed, so any changes made to a
- printer driver are not acted upon until either of these events. It’s
- obvious really, but if you haven’t registered the fact, it could cause a
- lot of confusion.
- 1.12
- For those who wish to use bold throughout a document, (e.g. for
- producing something on a dot-matrix printer that will go through a Fax
- machine) it would seem an obvious solution to put markers at the
- beginning and end of the document and make it all bold highlight.
- However, this is not a good idea because your printer will have to cope
- with double printing each word, one word at a time! Instead, change the
- printer driver so that the bold highlight is NOT cancelled at the end of
- a line. i.e. change the Y to an N and either send the necessary ESC
- sequence in the PON line or put a highlight 2 at the very start of your
- text.
- 1.12
- • Transferring character definitions − If you have files produced by
- the CHARDES program from the Master Welcome disc (mentioned last month,
- page 34) here is a little BASIC program to run the files on the
- Archimedes:
- 1.12
- 10 REM >ThinChar
- 1.12
- 20 CLS : INPUT “FileName ”;A$
- 1.12
- 30 OSCLI (“LOAD ”+A$+“ 12800”)
- 1.12
- 40 FOR I=127 TO 32 STEP -1
- 1.12
- 50 VDU23,I
- 1.12
- 60 VDU(?(&12844+I-32))
- 1.12
- 70 VDU(?(&128A4+I-32))
- 1.12
- 80 VDU(?(&12904+I-32))
- 1.12
- 90 VDU(?(&12964+I-32))
- 1.12
- 100 VDU(?(&129C4+I-32))
- 1.12
- 110 VDU(?(&12A24+I-32))
- 1.12
- 120 VDU(?(&12A84+I-32))
- 1.12
- 130 VDU(?(&12AE4+I-32))
- 1.12
- 140 NEXT
- 1.12
- • Quazer (again). The fix for Quazer 1.42 is ?&3D090=N¼ of lives,
- ?&3D98F=&F2, *SAVE Quazcode 9000 +365AC, *settype Quazcode FF8. •
- Printing in binary − PRINT ~number% prints number% in hexadecimal but
- there isn’t an equivalent for printing in binary. However, there are SYS
- commands that will do it for you. The following program illustrates the
- use of SYS &E0 which converts a number to a four byte binary number
- string (SYS’s &DF, DE and DD convert to 3, 2 and 1 byte binary numbers).
- 1.12
- The only other point of interest in the program is the way that the
- leading zeros are stripped off by lines 190, 200 (which can be omitted,
- of course, if you want the leading zeros!). The INSTR command finds the
- position of the first “1” starting from the left hand end of the string,
- take off one to give the number of zeros to be removed. The LEFT$
- command at line 200 turns those zero characters into the character set
- by pad$. (This illustrates the fact that you can use string functions on
- the left hand side of an assignment.) If pad$ is a space character, the
- binary numbers produced will all be the same length and so will be right
- justified but if you want the strings left justified, you can set pad$
- to CHR$0. (An alternative for left justification would be to use
- numb$=RIGHT$(numb$,32-n%).)
- 1.12
- 10 REM > BinPrint
- 1.12
- 20
- 1.12
- 30 pad$=CHR$0 :REM left justif’n
- 1.12
- 40 pad$=“ ” : REM right justif’n
- 1.12
- 50 OS_ConvertBinary4=&E0
- 1.12
- 60
- 1.12
- 70 REPEAT
- 1.12
- 80 INPUT “Number? ”number$
- 1.12
- 90 number%=EVAL(number$)
- 1.12
- 100 A$=FNbinconvert(number%)
- 1.12
- 110 PRINT A$
- 1.12
- 120 UNTIL0
- 1.12
- 130
- 1.12
- 140 DEF FNbinconvert(numb%)
- 1.12
- 150 LOCAL numb$,n%
- 1.12
- 160
- 1.12
- 170 SYS OS_ConvertBinary4,numb%,
- 1.12
- 32,numb$ TO numb$
- 1.12
- 180
- 1.12
- 190 n%=INSTR(numb$,“1”)-1
- 1.12
- 200 LEFT$(numb$,n%)=STRING$(n%
- 1.12
- ,pad$)
- 1.12
- 210 =numb$
- 1.12
- • Hard Disc Head Parking − Don’t forget that if the RFS is selected,
- it will accept the *BYE command but it will not park the heads on the
- drive. You have to be in ADFS.
- 1.12
- • Screenload/save − It is interesting to compare the time taken to
- save and load screens using *screensave and *screenload with the time
- taken to define the whole screen as a sprite and save it using *Ssave or
- load it with *Sload. In all modes there is considerable saving e.g.
- 1.12
- Mode1 Mode12 Mode 15
- 1.12
- *Screensave(load) 7(4) 25(18) 52(38)
- 1.12
- *Ssave(load) 1(<1) 3(3) 7(6)
- 1.12
- • Libraries and *mountÉ If you *mount a disc, the library from the
- previous disc remains in memory. For those with a single drive, this may
- seem a nuisance but the reason the library is not changed is that you
- can have a library on one drive and shove discs in and out of the other
- drive without losing the library − particularly important with hard
- discs. Obviously you could reselect the library with *library $.Library
- but it is much easier to use *bye. That way, you don’t even have to use
- *mount.
- 1.12
- • Reliable RS423 transfer from BBC’s. This is mostly just reiterating
- what has gone before, but to transfer reliably from BBC to Archimedes at
- 9,600 baud you need to [1] use the 1.24 serial patch (on Archive program
- disc 7) [2] Set *Configure DATA 5 (i.e. 8 data bits and 1 stop bit which
- is the default on the BBC) and [3] connect the BBC’s RTS output to the
- Archimedes’ DSR input (pin 6) instead of the CTS input (pin 8) and link
- pins 1, 4 and 8 together.
- 1.12
- • View A3.0 Further to the patches given in July issue (Vol. 1.10 page
- 6) Richard House reckons that instead of using &FF’s in the various
- locations you should use &00’s. (If someone has a working version of
- A3.0, please send it in so that we can add it to our collection of
- working patches!)
- 1.12
- • Viewstore 1.1 − Following on from the July Hints & Tips, not that
- not only should &ABE2, 3 and 4 be set to &EA, but also, the LDA #&82,
- JSR OSBYTE (&A9, &82, &20, &F4, &FF) routines need to be altered as with
- View A3.0. These occur at locations &A256 − A25A, &AA22 − AA26 and &AB98
- − AB9C. The code required in each of these locations is &A2, &00, &A0,
- &00, &EA. (LDX #&00, LDY #&00, NOP). (If you can’t cope with these
- technicalities, send us a disc with Viewstore 1.1 on it and we’ll modify
- it for you.)
- 1.12
- • Correct Nesting? To check that the nesting of loops, IF’s and CASE’s
- is correct within a program, use LISTO2 and LIST the program. If at the
- end of the program, the final line has two or more spaces after the line
- number, you’ve got an incorrect nesting somewhere. To check through,
- there should be no spaces between line numbers and DEFPROC’s, DEFFN’s or
- ENDPROC’s.
- 1.12
- • Marconi Trackerball. Archimedes’ mouse’s tail can apparently be
- removed, so says Mr T A Doncaster, and plugged into an identical
- connector within the Marconi RB2/PC-1 tracker ball and all works without
- any further fiddling about. Watch that the supply polarity is correct
- though.
- 1.12
- • Readable zeros. In InterSheet in particular, I find the slashed-
- zeros misleading − they can easily be mistaken for eights. If you re-
- program the zero character using a VDU23 command you can avoid the
- confusion. It does increase the possibility of confusion with a capital-
- O but that is far less important in spreadsheet work than confusion with
- 8. So, I store the following program in the RAM on the RFS and call it
- up with *IS<return>:
- 1.12
- 10 REM >RFS:IS
- 1.12
- 20 VDU23,48,60,102,102,102,102,
- 1.12
- 102,60,0
- 1.12
- 30 CHAIN “RFS:ISHEET”
- 1.12
- No doubt you could modify this program if you wanted to use the same re-
- programmed zero character with other spreadsheet software.
- 1.12
- • Computer salutions. R.E.Boldero, in the July edition, asked for a
- way of getting his computer to greet him each time he switched on. The
- next hint shows a partial solution.
- 1.12
- • RFS Boot file − If you use a ROM podule with battery backup, you can
- create a boot file that runs in the RFS and sets up all sorts of
- goodies. I used to have a BASIC program called !BOOT which set up all
- sorts of things on power-up or <ctrl-break> but if you are developing a
- BASIC program, get stuck and press <ctrl-break>, you lose the program
- because it is replaced by the boot program!!!!! After Adrian had fallen
- into this trap a few times when using my computer, he developed the
- following rather ingenious (not to say devious) EXECable boot program.
- (*Configure Filesystem RFS, *Configure Boot and *OPT 4,3 in the RFS.)
- 1.12
- We have since added a facility for making Arthur talk to you a bit more
- politely, from an idea sent in by Chris Hayes.
- 1.12
- To create the boot file, I start with the following Wordwise Plus file
- which is then spooled as “RFS:!BOOT”. (The line numbers are purely for
- discussion purposes.)
- 1.12
- 1 <gr>LL160<gr>PC “~”
- 1.12
- 2 VDU21
- 1.12
- 3 VDU6,11,32,32,32,32,32,32,21
- 1.12
- 4 VDU6,19,0,4,0,0,0,21
- 1.12
- 5 VDU6,19,1,0,0,0,0,21
- 1.12
- 6 VDU6,13,11,11,11,11,11,21
- 1.12
- 7 VDU6:COLOUR 6:VDU21
- 1.12
- 8 VDU6:PRINT“N o r w i c h C o
- 1.12
- m p u t e r S e r v i c e s“
- 1.12
- :VDU21
- 1.12
- 9 VDU6:COLOUR 7:VDU21
- 1.12
-
- 1.12
- 10 *SETCLI$PROMPT <13><10>Good
- 1.12
- Morning! *
- 1.12
- 11 *IF SYS$TIME LEFT 2>11 THEN SET
- 1.12
- CLI$PROMPT <13><10>Good Afternoon! *
- 1.12
- 12 *IF SYS$TIME LEFT 2>18 THEN SET
- 1.12
- CLI$PROMPT <13><10>Good
- 1.12
- Evening! *
- 1.12
-
- 1.12
- 13 *KEY0 *MOUNT 0|M*FREE|M*CAT|M
- 1.12
- 14 *KEY1 etc...
- 1.12
- 20 *KEY12 *FORMAT 0 D|M
- 1.12
-
- 1.12
- 21 *SET Run$Path ,ADFS:$.,RFS:$.
- 1.12
- ,%.
- 1.12
- 22 *SET Alias$> CAT
- 1.12
-
- 1.12
- 23 *FX255,8
- 1.12
- 24 *ADFS
- 1.12
- 25 *BASIC<gr>OC6
- 1.12
- The LL160 command (1) ensures that the command lines are not split up
- and the PC command ensures that the pad characters are sent when
- spooling the file. (2) switches off the screen display, but since this
- actual command appears on the screen, (3) moves up and wipes it out
- again! (4) and (5) change foreground and background colours (6) moves
- the cursor back up the screen, before printing out a welcome message in
- a different colour, (7 & 8) and switching back to white (9). The IF
- SYS$TIME commands then sets up the Arthurian prompt (normally a star on
- its own) to be something a bit more timely. (This doesn’t automatically
- change the greeting as the time of day changes, it gives you the
- greeting that was appropriate last time you pressed <ctrl-break>.) The
- function keys are then programmed, the runpath is set up etc (21 − 24)
- (See Archive 1.7, page 8) before BASIC is invoked with an OC6 to re-
- enable the screen.
- 1.12
- (You could create it by making it a BASIC program that started...
- 1.12
- *SPOOL RFS:!BOOT
- 1.12
- PRINT“VDU21”
- 1.12
- and endedÉ
- 1.12
- PRINT“*BASIC”;CHR$(6);
- 1.12
- *SPOOL
- 1.12
- I haven’t tried this BASIC version, but I presume it would work.)
- 1.12
- • Keyboard repeat speed. You may have noticed with First Word Plus or
- other wordprocessors that when pressing <return> on auto-repeat it
- cannot keep up and, when you take your finger off the key, it goes on
- spewing out returns until the keyboard buffer is empty. You can avoid
- this by reducing the auto-repeat speed with, say, *Configure repeat 15
- (instead of the default of 8) and then pressing <ctrl-break>. (It should
- really be called the auto repeat time as the number is the time in
- centi-seconds between repeats.) Instead of changing the configuration,
- you may prefer to could add a *FX12,15 command into the !BOOT file and
- then press <ctrl-break> after your WP session to restore the default
- repeat speed.
- 1.12
- • Disappearing cursor in EDIT. Have you noticed that if you hold the
- cursor key down in the BASIC editor, the cursor disappears so that you
- can’t see where it is on the line? Try changing the auto repeat speed as
- mentioned in the hint above − doesn’t always work, but it seems to make
- it better if you have a faster speed (smaller number in the command).
- 1.12
- • Auto indenting in EDIT. Some people like to put the indenting into
- the program itself to show the structure (as opposed to using LISTO3 to
- show the structure when you list it). If you are using the ARM BASIC
- editor, you can add the spaces automatically as you type in the program.
- What happens is that if you put a number of spaces at the beginning of
- one program line then, when you press <return>, the new line has the
- same number of leading spaces as the line before, so until you reach a
- REPEAT or UNTIL or FOR or NEXT etc, you just press <return> and type the
- next line without thinking about the indenting.
- 1.12
- • Disappearing programs in EDIT!! On the BASIC editor, if you edit a
- line that occupies more than one screen line and make it shorter, it may
- leave a blank line on the screen (no problem − this disappears as soon
- as you move the cursor away from that line). If you then press <return>
- to create a new line, the new line goes in the gap left by the editing
- (still, apparently, no problem). However as soon as you try to use any
- of the move, delete, or copy functions, all the line numbers go wrong
- and cursor movement becomes rather unpredictable. Indeed, if you move
- down the program, you will find that when the line that was edited moves
- off the top of the screen, the scrolling continues and the program
- disappears into oblivion! (Reset and OLD will recover your program
- intact.)
- 1.12
- The solution is, if you get a line gap, either re-number (which happens
- automatically if the line numbers were already consecutive) or move down
- a line then back up again before pressing <return>.
- 1.12
- • Pencil for Artisan. If you want to add a ‘pencil’ facility to
- Artisan, the joined-lines function can be made to provide this in the
- following way. (1) Using a copy (not the original!!) of the Artisan
- disc, enter the BASIC editor and load ART5. (2) Use Search and Edit to
- find DEFPROCKB. (3) Alter the procedure so that it looks like this:-
- 1.12
- DEFPROCKB
- 1.12
- LOCAL X%, Y%, B%
- 1.12
- IF J%=6 AND CLARE%=-1 THEN
- 1.12
- MOUSE X%,Y%,B% :ENDPROC
- 1.12
- ELSE
- 1.12
- REPEAT:MOUSE X%,Y%,B%:UNTIL B%<>BB%:ENDPROC
- 1.12
- ENDIF
- 1.12
- (4) Save this as ART5. (5) For completeness, use the Welcome utility,
- SEDIT, to change the joined-lines icon into a pencil icon. (6) Now, with
- the joined-lines function selected, holding down <select> draws a
- continuous line. On releasing <select>, the normal rubber band line
- appears, but it can be released by pressing <adjust> once. Pressing
- <adjust> again carries out the UNDO function.
- 1.12
- (While on the subject of modifying Artisan, note the short addition in
- Acorn User, April ’88 which adds an airbrush effect.)
- 1.12
- • Star LC24-10. If you are having problems with getting a Star LC24-10
- to accept output from First Word Plus or Graphic Writer, check the EPROM
- chip in the printer next to the dip switches. If it has a label on it
- showing version 1.0, contact Star Micronics and they will supply a free
- up-grade.
- 1.12
- • Moving menus. If you find that your menus keep moving about, drag
- the box down to the extreme bottom right corner of the screen until you
- can go no further. This makes them a little more secure − simple, but
- soothing!
- 1.12
- • Programming for speed. Programs like EMR’s SoundSynth and Minerva’s
- Hoverbod and Missile Control are actually written in BASIC, with calls
- to ARM assembly language routines where extra speed is really necessary.
- 1.12
- If you thought professional quality programs demanded assembly language
- only, think again! Perhaps there is a program you had thought of
- writing, but did not feel could be written in BASIC; the speed of the
- Archimedes has changed all of that.
- 1.12
- Your strategy should be to write the whole program in BASIC first and
- then see which routines need replacing with assembly language in order
- to provide the right response times.
- 1.12
- Mike Ginns’ recent book from DABS Press, “Archimedes Assembly Language”,
- contains a large number of assembly language counterparts for BASIC
- statements (he calls them “templates”), and would be of great value if
- you want to try your hand at this sort of approach. Although the book
- has rather a large number of grammatical errors and is not quite as
- fully comprehensive as it claims to be, but is still a good buy at
- £14.95. (Ian Nicholls)
- 1.12
- First Word Plus Hints
- 1.12
- • Using PC’s − If you have access to a PC and a PC version of First
- Word Plus, you may be interested to know that you can transfer files
- between the two using the Getfile and Putfile utilities of the PC
- Emulator. You can even transfer supplementary dictionaries the same way.
- 1.12
- • Adding printer drivers − It may not be very obvious how you add the
- extra printer drivers that we’ve provided on the program discs, onto
- your First Word Plus disc. Suppose you want the Kaga Taxan driver. Put
- in the program disc and type
- 1.12
- *copy 1WP.cfg.Kaga_Taxan 1WP.cfg.* P
- 1.12
- then change discs and press <space> as prompted. (Or use dual drives if
- you have them.)
- 1.12
- • Default printer driver − If you want to make, say the Juki driver,
- the default so that it comes up with that as the driver when you boot up
- the disc, use:
- 1.12
- *copy $.1WP.cfg.Juki $.Res*.
- 1.12
- 1WP.1wp_print F
- 1.12
- The F in the copy command makes it over-write the existing default
- driver.
- 1.12
- • Paging problems. You can now get a version of First Word Plus that
- obeys the command in the printer driver to stop at the end of a page to
- allow you to change the paper. Brian Carroll writesÉ “I returned my disc
- to Acorn and had it back by return of post with a clear and helpful
- letter. It seems that Acorn are at last getting the message about
- customer support. There are only two modified files: $.resources.1WP.1WP
- and $.resources.1WP. 1ML, so for anyone who has done some work to
- configure their working master disc it would be simpler just to copy
- these two files across than to start again from scratch. The bug-fix
- works OK, so the printer drivers that I sent for Canon PW-1080A (program
- disc number 10) will work properly.”
- 1.12
- • LQ1050 − You can add double height to the printer driver merely by
- using Search and Replace, changing 57 for 77 (double width for double
- height). It works fine − the only thing to remember is to set the line
- spacing to 2 in the ruler when choosing expanded pitch.
- 1.12
- • Large documents. Beware when you are printing long documents (30
- pages+) as FWP can get a bit confused and print the wrong pages.
-
-